我有一个字符串,我想哈希,让它看起来像51e7fae2d7b2b5388de06bc205e4a3ca。然后我希望能够去除它(不含盐)。我知道这根本不安全,但这不是为了安全。我已经尝试过使用NodeJS的加密,但似乎没有办法检索MD5哈希(不使用某些大型数据库)基本字符串哈希/去哈希
回答
散列是一种方式,不可逆转。你想要的是编码和解码。 Base64经常用于你想要的东西:
// encode
new Buffer("Hello World").toString('base64');
//=> SGVsbG8gV29ybGQ=
// decode
new Buffer("SGVsbG8gV29ybGQ=", 'base64').toString('ascii');
//=> Hello World
可以工作,但它根本不安全,因为base64可以在没有密钥的情况下取消base64。但是OP说这不是为了安全。 – Markasoftware
对,不是为了安全。如果只是为了生成模糊表示,这是有效的。 –
工程就像一个魅力。 –
哈希不能被去散列。你想要做的是完全不可能的。最接近的事情是在数据库中查找散列,但真正去散列MD5是不可能的。
下面是如何使用散列(用于在网站上登录):当用户创建帐户时,密码被散列,并且散列存储在数据库中。然后,每当他们尝试登录时,他们输入的密码都被散列,并且如果散列与数据库中的散列匹配,那么他们必须拥有正确的密码。
这样做的好处是,如果黑客设法访问数据库,他们仍然无法访问用户的密码;他们所有的就是哈希。由于哈希不能转换回原来的密码,黑客已经有效地设法访问一些随机的字母数字字符。
如果你想能够“去散列”的东西,那么你应该使用加密来代替。 CryptoJS支持AES加密,这可能是最流行的算法。
啊,是的..谢谢!我明白现在的差异。我应该说加密或混淆。 –
- 1. 哈希字符串
- 2. 哈希名字符串
- 3. 哈希字符串大小
- 4. 字符串哈希转换
- 5. Perl哈希哈希
- 6. 去除哈希表
- 7. 经典哈希点符号哈希
- 8. 哈希访问哈希
- 9. 哈希[string.split(...)]对哈希[* string.split(...)]
- 10. 哈希哈希在Perl中
- 11. 字符串到哈希中的符号
- 12. MD5哈希特殊字符
- 13. 使用哈希字符
- 14. 哈希几串TSQL
- 15. Python中的哈希(隐藏)字符串
- 16. 从字符串和int创建哈希
- 17. SHA1哈希十六进制字符串
- 18. 整数哈希从字符串
- 19. 哈希表在C(整型,字符串[])++
- 20. CUDA字符串的MD5哈希值
- 21. 用线性探测字符串哈希
- 22. 字符串中的Perl哈希对值
- 23. 从String.GetHashCode解密哈希字符串?
- 24. 哈希unicode字符串在python
- 25. 转换哈希字符串在Ruby中
- 26. Java:字符串到7位哈希
- 27. 设备的Android字符串哈希码
- 28. 哈希后的JavaScript检索字符串
- 29. 从字符串MD5哈希不匹配
- 30. 字符串的简单MD5哈希
你不能去散列的东西。这就是哈希如何工作。散列的重点是可以散列的东西,但不能去散列它们。如果你想能够去散列的东西,你应该使用加密而不是哈希。 – Markasoftware
我明白了,我对哈希有错误的想法!谢谢。 –