今天我們來講一講Java MD5和PHP,先給大家簡單介紹下MD5算法。
MD5算法是一種消息摘要算法,它可以將任意長度的消息,通過一系列復雜的計算過程,變換成長度為32位的十六進制數字字符串。比如下面的代碼,就是使用Java實現MD5加密:
import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class MD5Util { public static String encrypt(String source) { StringBuilder sb = new StringBuilder(); try { MessageDigest md = MessageDigest.getInstance("MD5"); md.update(source.getBytes()); byte[] bytes = md.digest(); for (byte b : bytes) { String hex = Integer.toHexString(b & 0xFF); if (hex.length() == 1) { sb.append("0"); } sb.append(hex); } } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return sb.toString(); } }
我們可以把任意的字符串作為參數,調用MD5Util.encrypt()方法得到一個32位的十六進制數字字符串作為結果。
而在PHP中,也有類似的函數,比如下面的代碼實現了對字符串的MD5加密:
同樣,我們可以把任意字符串作為參數,調用md5_encrypt()函數得到一個32位的十六進制數字字符串作為結果。
除了對字符串進行加密以外,我們還可以對文件進行MD5校驗。比如下面的Java代碼,就是計算一個文件的MD5校驗值:
import java.io.FileInputStream; import java.io.IOException; import java.security.DigestInputStream; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class FileMD5 { public static String calculate(String filePath) { StringBuilder sb = new StringBuilder(); try { MessageDigest md = MessageDigest.getInstance("MD5"); FileInputStream fis = new FileInputStream(filePath); DigestInputStream dis = new DigestInputStream(fis, md); byte[] buffer = new byte[1024]; while (dis.read(buffer) != -1) { } dis.close(); byte[] bytes = md.digest(); for (byte b : bytes) { String hex = Integer.toHexString(b & 0xFF); if (hex.length() == 1) { sb.append("0"); } sb.append(hex); } } catch (NoSuchAlgorithmException | IOException e) { e.printStackTrace(); } return sb.toString(); } }
我們只需要把要計算校驗值的文件路徑作為參數,調用FileMD5.calculate()方法即可得到一個32位的十六進制數字字符串作為結果。
在PHP中,同樣也可以對文件進行MD5校驗,比如下面的代碼:
同樣地,我們只需要把要計算校驗值的文件路徑作為參數,調用file_md5()函數即可得到一個32位的十六進制數字字符串作為結果。
以上就是關于Java MD5和PHP的簡單介紹和使用方法,除了以上所列舉的基礎用法以外,還有很多其他的場景和應用,大家可以根據自己的需求去進一步了解和學習。
上一篇css中如何設置表單
下一篇css中如何用浮動