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