Java计算一个字符串的HashCode
生活随笔
收集整理的這篇文章主要介紹了
Java计算一个字符串的HashCode
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
計算hashcode的原理步詳解:
import java.math.BigInteger;import java.security.MessageDigest; import java.security.NoSuchAlgorithmException;public class MD5 {public static void main(String[] args) throws NoSuchAlgorithmException{/** MD5,Message Digest Algorithm 5,是一種被廣泛使用的信息摘要算法,* 可以將給定的任意長度數據通過一定的算法計算得出一個 128 位固定長度的散列值*/// 第一步,獲取MessageDigest對象,參數為MD5字符串,表示這是一個MD5算法MessageDigest md5 = MessageDigest.getInstance("MD5");// 第二步,輸入源數據,參數類型為byte[]md5.update(new byte[] {'1', '2', '3'});// 第三步,計算MD5值?// String resultArray = md5.digest().toString();/** digest() 方法返回值是一個字節數組類型的 16 位長度的哈希值,通常,我們會* 轉化為十六進制的 32 位長度的字符串來使用,可以利用 BigInteger 類來做這個轉化:*/BigInteger bigInt = new BigInteger(1, md5.digest());String resultStr = bigInt.toString(16);System.out.print("123的MD5為:");System.out.println(resultStr);System.out.println(resultStr.length());}}?
由于Java中的String對象采用的是Unicode編碼,及一個字符(同char一樣)占兩個字節,不過通過string的內置方法獲取byte[]的時候,Java會自動將空的字節去除。如下:
String str1 = "123";? //數據在內存空間中占用6個字節的空間
String Str2 = "王";? //數據在內存空間中占用2個字節
int ln1 = str1.getBytes().length;? //ln1的長度為3(空的字節自動被舍棄)
int ln2 = str2.getBytes().length;? //ln2的長度為2(中文字符編碼要占用兩個字節)
?
所以計算一個數字字符串的時候可以將步驟2的代碼作為如下修改即可
String str = "123456";
md5.update(str.getBytes());
?
?
總結
以上是生活随笔為你收集整理的Java计算一个字符串的HashCode的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 静态链接库与动态链接库的区别(Sqlit
- 下一篇: Servlet3.0下配置Servlet