我是数据加密的新手。我研究了数据加密,主要发现了 md5 和 SHA 算法。您认为哪种技术最适合数据存储/安全性,为什么?
问问题
236 次
2 回答
5
MD5 和 SHA 是散列函数,它们从一堆数据中创建指纹 - 固定长度表示。例如,它们被广泛用作检查许多开源产品的 iso 映像下载的一致性的一种方式,但这意味着您可以使用它们从任何字节选择中创建指纹。所以他们不加密。
如果要加密,则应检查加密算法。我认为现在最可行的是 AES(高级加密标准),如果您寻找对称加密算法(例如,加密和解密的密钥相同或容易从另一个计算)或 RSA,如果您寻找非对称(您有2个密钥-公钥和私钥,从公钥计算私钥是一项艰巨的任务)。
如果您要创建数字签名,您可能需要检查诸如 DSA(数字签名算法)和 ECDSA(椭圆曲线上的 DSA)之类的内容。请注意,非对称算法适用于具有扩展精度的数字 - 例如 512、1024、2048 位等。您需要可以处理此类数字的特殊库。如果你使用 C++,我可以推荐你尝试 Crypto++。查找其他语言的类似内容。
我希望这对你有用。
于 2012-08-28T05:47:43.400 回答
0
如果您的数据是密码,并且您想将其存储在某个位置,则使用MD5
或SHA
散列。这些有两个好处。
- 哈希无法解密以恢复旧值,因此即使您向某人提供密码的 MD5/SHA 哈希,您的密码也永远不会被破解 :)
- 特定字符串的哈希值始终相同,因此您可以根据哈希值比较密码。
AES:
- 对称算法这么快
- 与 PKCS5Padding 和 CBC 模式一起使用
- 始终存储 IV
- 对称,因此您在解密加密文本时需要相同的密钥,因此您根本无法共享密钥。
RSA
- 用于交换密钥的 PKI 基础设施
- 慢的
还有其他算法,例如 DES(不那么安全)、3DES(通常称为三重 DES - 与 DES 相比不够安全)
于 2012-08-28T06:01:42.127 回答