我有一個字符串,我想哈希,讓它看起來像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
我明白了,我對哈希有錯誤的想法!謝謝。 –