我正在寻找一种对称的密钥加密方案,它可以加密我的12字节数据。正如你所看到的,它不符合64位或128位边界,我使用块加密算法,我不想填充数据,因为我对加密数据的长度有限制。限制是因为我将使用base 32将其转换为不能超过20个字符的可打印键。纯文本具有非常可预测的数据模式,因此加密方案应该能够隐藏它。根据我的理解,伪随机密钥生成是这个问题的唯一灵魂,但加密数据的解决方案和解密它的解决方案不会相互通信。
答案 0 :(得分:1)
您可以使用像RC4这样的流密码,但正如您所发现的那样,您无法重用该密钥。对于流密码,使用密钥/随机数(nonce = Number used used ONCE)组合。随机数可以简单到1,2,3,4 ......或日期/时间,并且需要与密文一起存储。在nonce循环回合到零之前更改密钥并开始重复。如果你使用日期/时间,那么确保时钟足够快,永远不要重复一个值。
你有一个长期密钥和一个随机数。每次要加密某些内容时,请将它们哈希以获取会话密钥:
sessionKey <- SHA256(longTermKey + nonce)
仅使用此会话密钥一次,然后将其丢弃。存储nonce以用于解密。增加一个数字随机数,为下次使用做好准备。对于日期/时间,随机数插入一个短暂的延迟以确保时钟已更改。 nonce 必须在下次使用时不同。
更改长期密钥时,您需要解密并重新加密所有数据。或者为你的随机数选择一个大的比特大小并保持你的长期密钥非常安全。
答案 1 :(得分:0)
您需要/需要一个流密码:http://en.wikipedia.org/wiki/Stream_cipher