有没有人知道使用高级加密标准加密的c ++库,可以在两行代码中实现加密和解密(使用计数器模式)。无需填充或缓冲文本,图书馆将负责所有这些。我看过crypto ++,openssl和libtomcrypt,但在这些中我似乎需要编写代码来缓冲和填充我不想要的明文。简而言之,我需要这些内容:
ciphertext = encrypt(ctr_mode(),plaintext,key)
plaintext = decrypt(ctr_mode(),ciphertext,key)
谢谢!
答案 0 :(得分:7)
我不知道你的要求有多严格,密文是简单的AES计数器模式,但Google's KeyCzar提供了你正在寻找的那种接口,比你所描述的更安全。
他们可以使用Python,Java和C ++实现。此外,该库还负责许多其他加密最佳实践,包括您可能没有意识到的一些(例如,概率加密,密钥版本等)。
我不会轻易驳回KeyCzar提供的额外安全性。根据您所描述的方案,如果您重复使用密钥,则会遇到很大麻烦。因此,为了确保您永远不会重复使用密钥,您可能需要进行大量额外的密钥管理,这通常被认为是任何密码系统中最难的部分之一。由于密钥管理松散,整个密码系统很容易崩溃!
如果您感兴趣,我可以在使用像计数器模式这样的确定性加密方案时进一步描述重新使用密钥的问题。
答案 1 :(得分:0)
好吧,也许我需要担心密钥重用,但我不相信,因为情况如下:
任何长度的数据(data1)都会出现;这被送到加密算法。让密钥为sec_key。该算法使用函数encrypt(data1,sec_key,CTR_mode)来加密data1。该算法将处理将data1分段为特定的块大小(可能我可以将其指定为256)并在需要时填充。我不需要担心这些因为我希望图书馆能够解决这个问题 现在,来了另一个数据,data2。同样,我们使用函数encrypt(data2,sec_key,CTR_mode)。我想我不需要担心密钥被重用,因为最终,每次IV都会有所不同,导致每个块的输出(在计数器模式下)不同。 对于解密部分,同样的事情:我们知道sec_key和数据。当我们将密文提供给函数decrypt(ciphertext,sec_key,CTR_mode)时,我们获取原始数据。
注意:CTR_mode ==计数器模式