我正在编写小程序(C ++)来加密/解密文件。在解密之前,我想检查用户提供的密码是否正确。我的想法:
这是对的吗?
答案 0 :(得分:8)
加密的主要建议:不要自己实现。那里有很多excellent libraries。
您建议提供backdoor (crib)来破解加密。甚至experts在设计加密时也会出错(更不用说密钥管理了!)。
(当然不是,我建议布鲁斯会ever get things wrong!)
答案 1 :(得分:4)
我建议使用某种类型的校验和,而不是“好”的字符串,例如MD5,CRC,SHA256等。这个校验和将从文件的前几个字节(例如128)计算。 / p>
无论如何,使用现有的加密库是一个更好的主意。
答案 2 :(得分:3)
您可以考虑在开头存储一些文件的哈希函数,例如MD5。
答案 3 :(得分:2)
拥有已知的加密值将有助于破解者找出您的加密密钥。
答案 4 :(得分:1)
更好的是:使用散列(例如SHA256)来加密文件本身(例如使用AES256),并将明文文件的散列(可以是任何内容,甚至是简单的CRC)附加到加密文件。
要破译:
作为奖励,不需要在某处保留“秘密”密钥,它都是自包含的。加上暴力/字典攻击很痛苦,因为每次尝试检查CRC时都必须破译整个文件。