AES & RSA算法

对称加密,经典算法 - AES

对称加密算法其实就是共享秘钥。在对称加密算法中,数据发信方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。

在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥。

对称加密算法的特点是算法公开、计算量小、加密速度快、加密效率高。不足之处是,交易双方都使用同样钥匙,安全性得不到保证。

此外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的惟一钥匙,这会使得发收信双方所拥有的钥匙数量成几何级数增长,密钥管理成为用户的负担,特别是在分布式网络系统应用上。


非对称加密,经典算法 - RSA

非对称加密算法需要两个密钥来进行加密和解密,这两个秘钥是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)。

  公钥(Public Key)与私钥(Private Key)是通过一种算法(RSA)得到的一个密钥对。公钥通常用于加密会话密钥、验证数字签名,或加密可以用相应的私钥解密的数据。通过这种算法得到的密钥对能保证在世界范围内是唯一的。使用这个密钥对的时候,如果用其中一个密钥加密一段数据,必须用另一个密钥解密。比如用公钥加密数据就必须用私钥解密,如果用私钥加密也必须用公钥解密,否则解密将不会成功。(注意这里的“必须”不是绝对的,也可以在理论上逆运算,但不具备实操性,原因如下)

    RSA的基本原理:

        密钥生成式:e*d =1 mod phi(n)

        加密式:c=m^d mod n

        解密式:m=c^e mod n

        公钥(n,d),私钥(n,e)

        其中n=p*q,p与q为两个大素数,phi(n) 是n的欧拉函数phi(n)=(p-1) (q-1), e是和phi(n) 互质的随机数,d是利用拓展欧几里得算法计算的e在mod phi(n) 下的逆元。

        e和d一个作为私钥,一个作为公钥。m是要加密的明文,c是密文

    RSA的公钥为什么不能逆推出私钥:

        考虑密钥生成式:e*d =1 mod phi(n)

        在已知公钥(n,e)的情况下,你还需要模数phi(n) 才能运行扩展欧几里得算法来得到d。

        关键就在这里:要求出phi(n),如果不知道p和q,那么求phi(n) 的困难性不会低于对n进行质因数分解。而由于n是一个极大的数(2^1024或更长),因此对它进行质因数分解,在当下来说是计算上不可行的。当代的计算机没办法在有限时间内完成这一任务。

    因此,也就是说已知公钥(n,e)求私钥(n,d) 是【计算上不可行】的。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容