一、术语
1.RSA
指1977年提出的基于大数分解难题的某非对称加密算法
2.AES
指美国2001年征集的高级加密标准,其实现为某对称加密算法。
3.加密算法
指提供加密、解密方式,且正常情况下公开算法内容的某算法。
4.对称加密与非对称加密
对称加密:加密与解密过程使用同一组密钥
非对称加密:用公钥进行加密,用私钥进行解密。
二、RSA加解密流程
生成公私钥:找到两个大素数,求欧拉公式的值,求模的逆元(这些属于前期准备工作,都不会影响加解密的性能,所以略去)
假设公钥 (n = 143, e= 7) 私钥(n = 143, d = 103)
假设对m加密得密文c,则c = m^e (mod n), m =c^d(mod n)
一般来说,d会比e大得多。
三、AES加解密流程
共四个步骤:字节代换、行移位、列混淆、轮密钥加
字节代换:哈希、内存寻址
行移位:位运算
列混合:异或
轮密钥加:异或
我们可以发现大量使用异或、内存寻址、位移操作。
四、性能对比
要比较两个算法的性能,实际上是分析计算机中四则运算及逻辑运算的性能差异。
先说结论:性能由高到低排序:异或>加法≈减法>乘法>除法
由初等数学的概念可知:
设a>b>0,
乘法为加法的循环,a * b即对a本身做b次的加法 4* 3 = 4 + 4 + 4
除法为减法的循环,a / b即对a减去n次的b,直到0<a < b
乘法为确定性的算法,处理的次数为b次。
除法为非确定性的算法,处理次数未知。
所以除法的处理比较次数会更多,性能比乘法差。
注:取余运算实际为除法运算结束后a的值。
逻辑门与加法的性能对比
半加器为异或门和与门的组合:
全加器为两个半加器和与门的组合:
显然:异或性能优于加法。
并且异或运算每一位的处理结果不会受到高低位的影响,加法会受到进位链的影响,高位需等到低位运算处理结束后才能进行计算。
结论
RSA大量使用幂次方操作和取余,本质上为乘法和除法,在性能上就比异或及哈希,位运算差。
AES是分组密码,在计算的时候可以并行计算,利用多线程大大提高性能。
RSA的加解密公式:c = m^e (mod n), m =c^d(mod n) 不存在可以拆分进行并行计算的可能。
实际验证(这里为转载):
其中RSA解密速度慢,也是因为模反逆元往往比本身的值大得多,导致需要进行更多的幂次方操作。
如公钥 (n = 143, e= 7) 私钥(n = 143, d = 103)