我目前正在完成一篇关于通过各种加密算法加密数据的论文。
我花了很多时间阅读期刊和论文,但目前还没有找到任何关于其表现复杂性的记录。
有人会知道以下算法的Big-O复杂性吗?
提前谢谢你;如果您能提供一个信誉良好且可信赖的来源的链接,我将非常感激。
答案 0 :(得分:8)
部分答案:RSA Laboratories提供此分析http://www.rsa.com/rsalabs/node.asp?id=2215比较RSA操作与DES
“RSA操作”,无论是加密,解密,签名还是验证,都基本上是模幂运算。该计算由一系列模乘法执行。
在实际应用中,通常为公钥选择一个小的公共指数。实际上,整个用户组可以使用相同的公共指数,每个指数具有不同的模数。 (当公共指数固定时,模数的素因子有一些限制。)这使得加密比解密和验证更快,比签名更快。使用用于实现RSA算法的典型模幂运算算法,公钥操作采用O(k2)步骤,私钥操作采取O(k3)步骤,并且密钥生成需要O(k4)步,其中k是模数中的位数。 “快速乘法”技术,例如基于快速傅立叶变换(FFT)的方法,需要渐近地减少步骤。然而,在实践中,它们并不常见,因为它们具有更高的软件复杂性以及它们对于典型的密钥大小实际上可能更慢。
RSA算法的许多商用软件和硬件实现的速度和效率正在迅速增加;有关最新数据,请参阅http://www.rsasecurity.com/。
相比之下,DES(参见第3.2节)和其他分组密码比RSA算法快得多。 DES通常至少是软件的100倍,硬件的速度是硬件的1,000至10,000倍,具体取决于实现方式。由于需求量很大,RSA算法的实现可能会在未来几年缩小差距,但分组密码也会更快。
答案 1 :(得分:4)
有一点需要注意(取决于您是否正在为您的论文编码):RSA的大多数实际实现实际上将使用RSA进行AES密钥交换。因此,加密/解密的O(k ^ 2)和O(k ^ 3)操作分别仅在加密AES密钥方面。 AES在软件/硬件上的速度提高了100-10K倍,实际的交换数据块密码 - 这样,您就可以利用PKI(通过RSA)而无需支付过高的计算价格。
答案 2 :(得分:1)
一个块的对称密码复杂度为O(1)。
只留下列表中的RSA,答案非常依赖于实现,具体取决于实现大整数乘法的效果,指数的选择等等。