大O符号:加密算法

6
我目前正在完成一篇有关使用各种密码算法加密数据的论文。我花了很多时间阅读期刊和论文,但至今没有找到任何它们性能复杂度的记录。
请问这些算法的复杂度是否已知,如果已知,请问以下算法的大O复杂度是多少?
RSA
DES
Triple DES (我预计应该与DES的顺序相同)
AES
Blowfish
非常感谢您的帮助,如果您能提供一个可靠且可引用的来源链接,我们将不胜感激。

你可能会在http://crypto.stackexchange.com/上更加幸运。 - ggozad
2
在加密算法中的大O符号:在crypto.SE上发布交叉帖子:http://crypto.stackexchange.com/questions/2338/big-o-notation-encryption-algorithms - CodesInChaos
先生,您的论文写完了吗?如果可以的话,您能否分享一下您的论文链接?我目前正在撰写一篇关于RSA算法时间复杂度的论文。非常感谢您提前的帮助。 - alyssaeliyah
3个回答

8
部分答案:RSA实验室提供了这份分析,存档自rsa.com,比较了RSA操作和DES。 RSA算法有多快?

无论是加密、解密、签名还是验证,“RSA操作”本质上都是模幂运算。这个计算通过一系列模乘法来完成。

在实际应用中,通常选择一个小的公共指数作为公钥。事实上,整个用户组可以使用相同的公共指数,每个用户使用不同的模数。(当公共指数固定时,模数的素因子存在一些限制。)这使得加密比解密更快,验证比签名更快。使用实现RSA算法的典型模幂算法,公钥操作需要O(k^2)步骤私钥操作需要O(k^3)步骤密钥生成需要O(k^4)步骤,其中k是模数的位数。“快速乘法”技术,如基于快速傅里叶变换(FFT)的方法,需要渐近较少的步骤。然而,在实践中,它们不太常见,因为它们具有更高的软件复杂性,并且实际上可能对于典型的密钥大小而言更慢。

许多商业可用的RSA算法软件和硬件实现的速度和效率正在迅速提高;请参见http://www.rsasecurity.com/了解最新数据。

相比之下,DES(参见第3.2节)和其他分组密码比RSA算法快得多。在软件中,DES通常比RSA算法快100倍以上,在硬件中则快1000到10000倍,具体取决于实现方式。由于高需求,RSA算法的实现将可能在未来几年缩小差距,但分组密码也将变得更快。


4

需要注意的一点(这取决于你是否在编写论文):实际上,大多数RSA的真实应用都会使用RSA来进行AES密钥交换。因此,加密和解密的O(k^2)和O(k^3)操作仅涉及加密AES密钥。而AES在软件/硬件上100-10K倍的速度比较快,可以为正在交换的数据执行实际的块密码操作--这样,您就可以利用PKI(通过RSA)而无需支付过高的计算成本。


1

对称密码复杂度针对一个块是O(1)。

那么你的列表中只剩下RSA了,答案非常依赖于实现方式,取决于大整数乘法实现得有多好,指数选择等因素...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接