zoukankan      html  css  js  c++  java
  • 加密与解密-基础理论篇

    1.加密算法概述

    加密算法根据内容是否可以还原分为 可逆加密和非可逆加密 。

    可逆加密根据其加密解密是否使用的同一个密钥而可以分为 对称加密和非对称加密。

    对称加密即是指在加密和解密时使用的是同一个密钥:举个简单的例子,对一个字符串C做简单的加密处理,对于每个字符都和A做异或,形成密文S。解密的时候再用密文S和密钥A做异或,还原为原来的字符串C。这种加密方式有一个很大的缺点就是不安全,因为一旦加密用的密钥泄露了之后,就可以用这个密钥破解其他所有的密文。

    非对称加密在加密和解密过程中使用不同的密钥,即公钥和私钥。公钥用于加密,所有人都可见,私钥用于解密,只有解密者持有。就算在一次加密过程中原文和密文发生泄漏,破解者在知道原文、密文和公钥的情况下无法推理出私钥,很大程度上保证了数据的安全性。

    此处,我们介绍一种非常具有代表性的非对称加密算法,RSA加密算法。RSA算法是1977年发明的,全称是RSA Public Key System,这个Public Key就是指的公共密钥。

    2、RSA加密算法的使用过程

    同样以一个字符串来进行举例,例如要对字符串the art of programming进行加密,RSA算法会提供两个公钥e和n,其值为两个正整数,解密方持有一个私钥d,然后开始加密解密过程过程。

    1.      首先根据一定的规整将字符串转换为正整数z,例如对应为0到36,转化后形成了一个整数序列。

    2.      对于每个字符对应的正整数映射值z,计算其加密值M=(N^e)%n. 其中N^e表示N的e次方。

    3.      解密方收到密文后开始解密,计算解密后的值为(M^d)%n,可在此得到正整数z。

    4.      根据开始设定的公共转化规则,即可将z转化为对应的字符,获得明文。

    3.RSA加密的缺点

    1)产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。

    2)安全性,RSA的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的难度与大数分解难度等价,而且密码学界多数人士倾向于因子分解不是NP问题。

    3)速度太慢,由于RSA 的分组长度太大,为保证安全性,n 至少也要 600 bitx以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级;且随着大数分解技术的发展,这个长度还在增加,不利于数据格式的标准化。

  • 相关阅读:
    java反射机制2
    Java反射机制
    EKT Java企业级关键技术强化 Enterprise Edition
    idea导入tomcat后解决控制台中文乱码问题(day12)
    大对象数据LOB的应用 (day10)
    Java关键技术强化:JDK5.0新特性 (day08)
    Java关键技术强化:JDK5.0新特性1 (day07)
    Java高效特性:反射(二)之获取Class对象的四种方式及其区别 (day06)
    Java关键技术强化:类加载器 (day05)
    Java高级特效:反射 (day04)
  • 原文地址:https://www.cnblogs.com/fendou0320/p/5525836.html
Copyright © 2011-2022 走看看