MD5加密在线工具


字母大小写


关于MD5加密在线工具:

这个MD5加密在线工具可以帮助您将一个输入字符串加密为固定的128位MD5字符串.

comic 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