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):

[email protected]nstance-1:/var/log/apache2# openssl dgst -md5 access.log
MD5(access.log)= 742f23518e684f3562ffc9f983f190ba