日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

java使用MD5加密

發布時間:2025/3/15 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java使用MD5加密 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、主要使用MessageDigest類(java.security包下

1、首先,先看下官方文檔

  • 此 MessageDigest 類為應用程序提供信息摘要算法的功能,如 MD5 或 SHA 算法。信息摘要是安全的單向哈希函數,它接收任意大小的數據,并輸出固定長度的哈希值
  • MessageDigest 對象開始被初始化。該對象通過使用 update 方法處理數據。任何時候都可以調用 reset 方法重置摘要。一旦所有需要更新的數據都已經被更新了,應該調用 digest 方法之一完成哈希計算。
  • 對于給定數量的更新數據,digest 方法只能被調用一次。在調用 digest 之后,MessageDigest 對象被重新設置成其初始狀態

2、接下來看幾個MessageDigest的方法(按照使用順序介紹

  • public static MessageDigestgetInstance(String?algorithm)throws NoSuchAlgorithmException 返回實現指定摘要算法的 MessageDigest 對象。參數algorithm為加密方式,可選MD5、sha...
  • void
    ?update(byte[]?input)
    ??????????使用指定的 byte 數組更新摘要。
  • 獲取摘要字節數組
  •   public byte[] digest()
    通過執行諸如填充之類的最終操作完成哈希計算。在調用此方法之后,摘要被重置
    返回:
    存放哈希值結果的 byte 數組。

    3、將字節數組轉換成16進制字符串

      為什么要將字節數組轉換成16進制字符串?

    我們使用digest()方法獲得MessageDigest生成的摘要后需要將其轉換成String字符串

    Java中無論是漢字還是英文字母都是用Unicode編碼來表示的,一個Unicode碼是16位,每字節是8位,所以一個Unicode碼占兩字節。

    但是英文字母比較特殊,源自于8位(1字節)的ASCII碼,于是在Unicode碼僅使用了低8位(1字節)就可以表示,高8位的話不使用也無所謂。

    ?

    代碼如下:

    String str = "lalalla";byte[] resultByteArray;try {//獲取MessageDigest對象MessageDigest messageDigest = MessageDigest.getInstance("MD5");messageDigest.update(str.getBytes());resultByteArray = messageDigest.digest();for(Byte content:resultByteArray){System.out.println(content);}System.out.println(bytesToHexFun2(resultByteArray));} catch (NoSuchAlgorithmException e) {e.printStackTrace();}

    ?

    ?二、byte[]轉十六進制String(轉載自:http://blog.csdn.net/worm0527/article/details/69939307)

    所謂十六進制String,就是字符串里面的字符都是十六進制形式,因為一個byte是八位,可以用兩個十六進制位來表示,因此,byte數組中的每個元素可以轉換為兩個十六進制形式的char,所以最終的HexString的長度是byte數組長度的兩倍

    private static final char[] HEX_CHAR = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; /*** 方法二:* byte[] to hex string* * @param bytes* @return*/public static String bytesToHexFun2(byte[] bytes) { char[] buf = new char[bytes.length * 2]; int index = 0; for(byte b : bytes) { // 利用位運算進行轉換 buf[index++] = HEX_CHAR[b >>> 4 & 0xf];//高四位 buf[index++] = HEX_CHAR[b & 0xf];//低四位 } return new String(buf); }

    如果是使用MD5得到的摘要進行轉換,那么得到的字符串為32位(因為MD5得到的摘要的字節數組的長度為16),這樣我們利用二中byte[]轉十六進制String的方法將一中生成的字節數組進行轉換,即得到我們需要的String類型的MD5加密字符串。

    注意:如果使用new String(byteArray)將獲得的字節數組直接轉換成String,則會出現亂碼

    轉載于:https://www.cnblogs.com/lige-H/p/7209946.html

    總結

    以上是生活随笔為你收集整理的java使用MD5加密的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。