MD5加密在線工具
關於MD5加密在線工具:
這個MD5加密在線工具可以幫助您將一個輸入字符串加密為固定的128位MD5字符串.
為什麼需要MD5?
諸如MD5之類的哈希算法是單向算法,這意味著它是不可逆的. 這個字符使MD5在文件上製作"指紋"非常有用,文件的MD5值可以證明文件沒有被修改. 哈希算法也用於密碼保護. 存儲在網站數據庫中的"鹽"和您的原始密碼最終值是不可逆的,意味著即使數據庫洩露, 黑客也無法恢復您的密碼.
MD5是否安全,我應該繼續使用它嗎?
第一種攻擊叫做(rainbow tables)
.它是一個非常大的數據庫,包括具有相應MD5值的簡短字符串.例如,當您查彩虹表"FC5E038D38A57032085441E7FE7010B0"
時,你可以找到它的原始字符串是"helloworld". 如果原始字符串很短,彩虹表可以成功解密MD5.
第二次攻擊基於MD5的基礎算法,近年來越來越多的網站切換到SHA256或SHA512. 但是許多網站仍在使用MD5,這給互聯網安全留下了巨大的隱患.
更多關於MD5的鏈接:
RFC 1321: https://www.ietf.org/rfc/rfc1321.txt
Python中的MD5 (hashlib): https://docs.python.org/3/library/hashlib.html
Java中的MD5: https://docs.oracle.com/javase/7/docs/api/java/security/MessageDigest.html
PHP中的MD5: http://php.net/manual/en/function.md5.php
用Python計算字符串的MD5哈希值(用package hashlib):
import hashlib def md5_generator(str): m = hashlib.md5() m.update(str.encode()) return m.hexdigest()
用Java計算字符串的MD5哈希值(用package MessageDigest):
import java.math.BigInteger; import java.security.MessageDigest; public String generate(String str){ MessageDigest md = MessageDigest.getInstance("MD5"); md.update(str.getBytes()); byte[] digest = md.digest(); String result = new BigInteger(1, digest).toString(16).toUpperCase(); return result; }
在Linux中計算文件的MD5哈希值(用OpenSSL):
root@instance-1:/var/log/apache2# openssl dgst -md5 access.log MD5(access.log)= 742f23518e684f3562ffc9f983f190ba