【发布时间】:2014-09-29 13:35:51
【问题描述】:
有没有办法为相同的给定字符串生成不同的输出,这里是例子:
echo md5('test');
这总是为给定的输入生成相同的fb469d7ef430b0baf0cab6c436e70375。如何每次生成不同的加密文本并在需要时进行解密?
我见过md5、base64_encode、crypt、sha1 等函数,但它们会产生相同的输出,其次,如果需要,我以后无法解密。
P.S:我知道我可以使用一种方式加密并比较加密文本,但对于特定情况,我需要能够在以后需要时完全解密文本但是我无法弄清楚是否有某种方式或在 php 中为它提供函数。
任何帮助将不胜感激。谢谢
【问题讨论】:
-
如果您可以再次将哈希恢复到原始状态,那么哈希的意义何在
-
您将
encryption算法与hash算法混淆了。MD5和SHA1是one-way hash算法,并不意味着“解密”。您应该使用encryption算法,例如3DES、AES、TwoFish等。 -
md5和sha1是不是加密函数,它们是散列算法,它们的全部意义在于它们'仅单向。好的哈希不能“解密” -
@SaniHuttunen:抱歉,是的,我希望能够加密给定文本并稍后解密,但条件是即使对于相同的给定字符串,加密文本也应该不同。
-
@EliasVanOotegem:然后使用
encryption算法。每个算法将采用key(您可以随机定义或选择)。这个key用于加密数据和解密数据。如果您使用不同的keys,相同的plaintext将导致不同的ciphertext。
标签: php string encryption random