(A)RC4曾经适合这项法案,因为写起来很简单。但这些天它也不那么安全。
我想知道是否有继任者:
我不能使用加密库,否则所有这些都没有实际意义。此外,我会考虑块算法,但我认为大多数都非常重要。
感谢。
答案 0 :(得分:1)
老实说,你最好的选择是使用加密库。它已经是一个经过测试的平台,甚至加密库也无法实现算法......最好使用预先存在的加密库,它已经足够强大,可以正确地使用API进行加密/解密,因为它是就像这篇关于编码恐怖的帖子:Why Isn't My Encryption.. Encrypting?
现在我已经阅读了关于Stream ciphers的维基百科文章,可能值得浏览文章中的密码列表,自1987年RC4以来已经开发了几个密码,以及我非常有限的密码学知识他们中的一些人似乎比RC4更安全。您可能还想考虑查看eSTREAM上的维基百科文章。投资组合中有几个密码:HC-128,Rabbit,Salsa20/12,SOSEMANUK。
答案 1 :(得分:0)
没有密码易于实现,特别是对称密码,它们永远不会。有很多可能出错,大多数程序员都没有意识到这一点。你需要更多地阅读这个主题。
使用分组密码,您必须关注您使用的the mode,并且不同的模式满足不同的需求(但ECB始终是错误的选择)。您还必须非常小心地为每条消息维护unique IV。如果您使用“密码”作为密钥,则必须使用string2key函数。
流密码没有IV或模式,这实际上使更难。流密码功能仅接受密钥,输出是无限大的“PRNG流”。然后将此随机数据流与您的消息进行异或。因此,如果您使用相同的密钥,您将获得相同的PRNG流。如果攻击者知道1条消息的明文(或消息的一部分),那么他可以从密文中删除PRNG,然后在恒定时间O(1)中使用该密钥解密所有其他消息。对于实际上安全的流密码,您永远不能重复使用相同的密钥。
我强烈建议您选择一本实用密码术,其中有几章专门介绍对称密码攻击。这本书很直接,不需要很多数学。如果不真正关心实现自己的实现,那么你可以使用经过验证的密码实现,例如Jasypt,它“以正常的方式工作”。