RSA与AES加密算法的性能差异分析

一、术语

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

乘法为确定性的算法,处理的次数为b次。

除法为非确定性的算法,处理次数未知。

所以除法的处理比较次数会更多,性能比乘法差。

注:取余运算实际为除法运算结束后a的值。

逻辑门与加法的性能对比

半加器为异或门和与门的组合:

RSA与AES加密算法的性能差异分析_第1张图片

全加器为两个半加器和与门的组合:

RSA与AES加密算法的性能差异分析_第2张图片

显然:异或性能优于加法。

并且异或运算每一位的处理结果不会受到高低位的影响,加法会受到进位链的影响,高位需等到低位运算处理结束后才能进行计算。

结论

RSA大量使用幂次方操作和取余,本质上为乘法和除法,在性能上就比异或及哈希,位运算差。

AES是分组密码,在计算的时候可以并行计算,利用多线程大大提高性能。

RSA的加解密公式:c  = m^e  (mod n), m =c^d(mod n) 不存在可以拆分进行并行计算的可能。

实际验证(这里为转载):

其中RSA解密速度慢,也是因为模反逆元往往比本身的值大得多,导致需要进行更多的幂次方操作。

如公钥 (n = 143, e= 7) 私钥(n = 143, d = 103)

你可能感兴趣的:(算法,密码学,加密解密,算法,机器学习)