当前位置 : 主页 > 编程语言 > java >

字符串转hash值

来源:互联网 收集:自由互联 发布时间:2023-09-14
需求:将中文字符串转为对应的hash值 package util;import java.nio.charset.StandardCharsets;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;/** * @Author: ZD * @Date: 2023/8/29 */public class Has

需求:将中文字符串转为对应的hash值

package util;

import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * @Author: ZD
 * @Date: 2023/8/29
 */
public class HashUtil {
    public static long chineseSentenceToHash(String sentence) throws NoSuchAlgorithmException {
        // 将中文语句编码为字节序列
        byte[] encodedBytes = sentence.getBytes(StandardCharsets.UTF_8);

        // 创建SHA-256哈希算法实例
        MessageDigest digest = MessageDigest.getInstance("SHA-256");

        // 计算哈希值
        byte[] hashBytes = digest.digest(encodedBytes);

        // 将哈希值转换为长整型
        long hashValue = byteArrayToLong(hashBytes);

        return hashValue;
    }

    private static long byteArrayToLong(byte[] bytes) {
        long value = 0;
        for (int i = 0; i < 8 && i < bytes.length; i++) {
            value |= ((long) (bytes[i] & 0xFF)) << (8 * i);
        }
        return value;
    }


    public static void main(String[] args) throws NoSuchAlgorithmException {
        String chineseSentence = "";
        long hashValue = chineseSentenceToHash(chineseSentence);
        System.out.println(hashValue);
    }
}
网友评论