学习加密算法非常有趣。只要记住你是在玩,而不是产生任何严重的东西。只要您只对您的个人日记(甚至可能是密码)进行加密,并且保证数据的安全,您可能会没事的。这种通过默默无闻算作安全。但是,我不建议对您真正需要保密的大量数据或任何可用且外界感兴趣的数据进行加密。
在这种情况下,如果您的消息比密钥大小和散列块大小短,并且密钥是一次性且随机的,那么您实际上是在使用一次性垫,因此一切都在膨胀。如果您的随机数密钥生成是完美的,那么您就有了牢不可破的加密机制。当您将每个块添加到消息中时,您实际上是在使用 SHA-512 计算新密钥,而不是添加任何特定值。如果攻击者可以假设消息由可打印的文本组成,并且消息的长度很长或者密钥被重复使用,那么找到原始密钥应该不会太难。
计算会更有效:
M(1)=h(N + key) XOR Message(1)
M(2)=h(M(1)) XOR Message(2)
M(3)=h(M(2)) XOR Message(3)
(其中 N 是以明文形式传递的密钥被使用的次数。)
这样,坏人就无法提前计算您的密钥序列并在您之前解密您的消息。此外,通过使用密钥的加盐哈希,攻击者将无法预测下一次将使用的密钥序列。
我在某处读到:
- 密码学的第一条规则是“密码学应该留给专家”。
- 第二条规则是“你不是专家”。</li>
人们获得计算机科学和数学等领域的博士学位是有原因的。有很多东西要学习和发现。像这样的东西对我来说看起来不错,但毫无疑问它有一个大洞,攻击者可以开着卡车穿过。
玩得开心,不要让像我这样脾气暴躁的人让你失望。/鲍勃·布莱恩