一、MD5校驗概述
MD5算法是一項公開的密碼散列函數,主要用於確保信息傳輸過程中的數據完整性,防止誤碼和篡改。MD5可以將任意長度的數據“壓縮”成一個128bit(16byte)的摘要。MD5不是加密算法,因為無法根據MD5摘要反推出原始數據,但是MD5摘要不是絕對安全的,可以通過碰撞攻擊推出不同的原始數據對應同一個MD5值的情況。
二、Windows下MD5校驗工具使用方法
在Windows操作系統中,可以使用自帶的fciv.exe(File Checksum Integrity Verifier)工具進行MD5校驗,步驟如下:
1、下載fciv.exe工具並解壓縮到指定目錄。
$ md5checker
├── fciv.exe
└── file.txt
2、打開命令提示符窗口,進入fciv.exe所在目錄。
C:\Users\admin>cd md5checker
C:\Users\admin\md5checker>
3、輸入fciv.exe命令,加上待校驗的文件名或文件夾路徑。
C:\Users\admin\md5checker>fciv.exe file.txt
4、等待校驗完成,軟件會自動計算並顯示校驗值。
//
// File Checksum Integrity Verifier version 2.05.
//
MD5 SHA-1
------------------------------------------------------------------------------
a95729633217d786a52af1db7a8e2938 8d7aa83d99224486bae8b32dbdfb1f1d18ce4c29 file.txt
三、Python實現MD5校驗
Python標準庫中的hashlib模塊可以非常方便地進行MD5計算,代碼如下:
import hashlib
def calc_md5(filename):
with open(filename, mode='rb') as f:
hash_obj = hashlib.md5()
while True:
data = f.read(4096)
if data:
hash_obj.update(data)
else:
break
return hash_obj.hexdigest()
使用示例:
md5_value = calc_md5('file.txt')
print(md5_value)
// 輸出:a95729633217d786a52af1db7a8e2938
四、Java實現MD5校驗
Java內置的java.security.MessageDigest類可以用於實現包括MD5在內的多種加密算法。示例代碼如下:
import java.io.File;
import java.io.FileInputStream;
import java.security.MessageDigest;
public class MD5Util {
public static String calcMD5(String filename) throws Exception {
File file = new File(filename);
FileInputStream fis = new FileInputStream(file);
byte[] buffer = new byte[1024];
MessageDigest md5 = MessageDigest.getInstance("MD5");
int len;
while ((len = fis.read(buffer)) != -1) {
md5.update(buffer, 0, len);
}
fis.close();
return bytesToHex(md5.digest());
}
private static String bytesToHex(byte[] bytes) {
StringBuilder sb = new StringBuilder();
for (byte b : bytes) {
sb.append(String.format("%02x", b));
}
return sb.toString();
}
}
使用示例:
String md5Value = MD5Util.calcMD5("file.txt");
System.out.println(md5Value);
// 輸出:a95729633217d786a52af1db7a8e2938
五、MD5校驗要點
1、MD5校驗僅能檢測到發送或存儲的數據是否完整,無法檢測到數據是否被篡改。
2、MD5算法在密碼學中被證明不是絕對安全的,針對性碰撞攻擊可能會導致校驗錯誤。
3、MD5校驗在很多情況下都需要結合其他安全措施使用,如數字簽名、SSL加密、文件加密等。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/244349.html
微信掃一掃
支付寶掃一掃