Java 程式中MD5的簡單使用
阿新 • • 發佈:2018-11-07
寫的不錯
MD5 (Message-Digest Algorithm 5)訊息摘要演算法
雖然網上有很多例子,我們還是動手實踐一下
在maven專案中匯入依賴包
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.3.2</version> </dependency>
Md5Utill類
import java.math.BigInteger; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import org.apache.commons.codec.digest.DigestUtils; public class MD5Utill { public String encodeMsg(String msg) { // 生成一個MD5加密計算摘要 MessageDigest md; String str=null; try { md = MessageDigest.getInstance("MD5"); // 計算md5函式 md.update(msg.getBytes()); // digest()最後確定返回md5 hash值,返回值為8為字串。因為md5 hash值是16位的hex值,實際上就是8位的字元 // BigInteger函式則將8位的字串轉換成16位hex值,用字串來表示;得到字串形式的hash值 str=new BigInteger(1, md.digest()).toString(16); } catch (NoSuchAlgorithmException e) { // TODO Auto-generated catch block e.printStackTrace(); } return str; } public static void main(String[] args) { MD5Utill md5Utill = new MD5Utill(); System.out.println(md5Utill.encodeMsg("123123")); } }
結果
4297f44b13955235245b2497399d7a93
當然我還可以對加密結果或者加密前的資料進行再次加密。但是由於md5加密不是可以逆運算的,因此 對方只能將收取到的資料用同樣的方式進行加密,再將加密結果進行對比。