DES 加密称为“单向加密”还是“双向加密”?是否有 PHP 类或方法解密 DES 加密?谢谢
6 回答
应该注意的是,围绕DES算法存在(并且一直存在)问题。它已经被广泛使用了很长时间,但由于它最初只指定了一个 56 位密钥,因此对于此时的任何重要用途来说它是否足够安全是值得怀疑的。三重 DES 通常更好,但有一些已知的理论攻击。如果您可以选择密码,则可能需要查看AES。
DES 可以反转,所以它是一种双向加密(如果你是这个意思)。
DES 是一个众所周知的加密标准,因此它也应该在 PHP 中可用。
单向加密是一种安全的散列形式:明文被更改为明显随机的数据序列,通常是固定长度的,这样原始明文(理论上)就无法在没有蛮力的情况下被检索到。
双向加密或可逆加密是我们通常所说的加密的意思:明文被转换为明显随机的数据,但在某种程度上依赖于允许检索原始明文的“密钥”。
DES 是一种可逆加密形式,按照当今的标准来说相对较弱,因为它依赖于 56 位密钥(14 个十六进制字符)。它已被 3DES 或三重 DES 取代,后者本质上是具有更长密钥的相同算法。
您没有提及您的应用程序,但如果您只需要比较数据而不需要检索它,则散列被认为更安全。例如,您可以存储散列密码;然后,当用户进行身份验证时,对输入的文本执行相同的哈希并将其与存储的哈希值进行比较。如果它们匹配,则输入了正确的密码。
散列的一个显着优势是您不需要存储解密密钥。
我不熟悉“单向加密”或“双向加密”术语。有一个术语“一次性密码”(与 DES 完全无关),并且有“对称”和“不对称”加密算法,这意味着是使用相同的密钥进行加密和解密(对称)还是一组两个不同的密钥一个用于加密,另一个用于解密(不对称)。DES 是一种对称算法。至于 PHP, crypt() 既然正在做这项工作:
我认为您可能是指单向函数[1]。在密码学中,人们区分对称和非对称密码学。对称密码术使用相同的密钥进行加密和解密(DES 是对称的)。非对称密码学用于密钥交换,公钥用于加密消息,而私钥用于解密。非对称密码学的一个例子是 AES [2]。非对称密码学使用单向函数。
[1] http://en.wikipedia.org/wiki/One-way_function [2] http://en.wikipedia.org/wiki/AES