首页 > 其他分享 >字符串转hash值

字符串转hash值

时间:2023-09-14 16:03:47浏览次数:39  
标签:java long 哈希 import 字符串 hash byte digest

需求:将中文字符串转为对应的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);
    }
}

标签:java,long,哈希,import,字符串,hash,byte,digest
From: https://blog.51cto.com/u_16199760/7470883

相关文章

  • 字符串小练习
    AC自动机P2414题目描述:阿狸喜欢收藏各种稀奇古怪的东西,最近他淘到一台老式的打字机。打字机上只有\(28\)个按键,分别印有\(26\)个小写英文字母和B、P两个字母。经阿狸研究发现,这个打字机是这样工作的:输入小写字母,打字机的一个凹槽中会加入这个字母(这个字母加在凹槽的......
  • 代码随想录算法训练营第9天| ●28. 实现 strStr() ●459.重复的子字符串 ●字符串总结
    28.找出字符串中第一个匹配项的下标mydemo--(mythought)--(falied)classSolution{public:intstrStr(stringhaystack,stringneedle){for(inti=0;i<haystack.size();i++){if(haystack[i]!=needle[0])continue;......
  • python 根据asctime字符串转成日期
    1、将asctime转换为时间戳如果将asctime转换为日期时间字符串,首先需要将asctime转换为时间戳。时间戳是指自1970年1月1日以来的秒数。Python中的time模块提供了将asctime转换为时间戳的函数mktime。importtimeasctime="FriMay1405:24:592021"t=time.mktim......
  • [转] HashCat Linux密码
    linux操作系统密码破解(1)(2)(3)(4)一、linuxsha512crypt$6$,SHA512(Unix)加密方式:hashcat-m1800sha512linux.txtp.txt二、linuxsha256crypt$5$,SHA256(Unix)加密方式:hashcat-m7400sha256linux.txtp.txt三、linux下md5crypt,MD5(Unix),Cisco-IOS$1$(MD......
  • 代码随想录算法训练营第8天| ● 344.反转字符串 ● 541. 反转字符串II ● 剑指Offer 0
    344.反转字符串mydemo--(一次就过)--(成功)classSolution{public:voidreverseString(vector<char>&s){intlen=s.size();chartmp;inti=0;intj=len-1;while(i<j){tmp=s[i];......
  • (转)HashMap出现 java.util.ConcurrentModificationException
    Iterator<Integer>keys=gradeMap.keySet().iterator();while(keys.hasNext()){Integeri=keys.next();if(!gradesIds.contains(i)){//keys.remove();gradeMap.remove(i);}......
  • 比较分析Vector、ArrayList和hashtable hashmap数据结构
    线性表,链表,哈希表是常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的类来实现基本的数据结构。这些类均在java.util包中。本文试图通过简单的描述,向读者阐述各个类的作用以及如何正确使用这些类。[color=green][b]Collection├List│├LinkedList│├ArrayL......
  • 逗号分隔的字符串与List互转-----字符串与数组互转
    1.字符串转数组使用Java split()方法split()方法根据匹配给定的正则表达式来拆分字符串。注意:.、|和*等转义字符,必须得加\。多个分隔符,可以用|作为连字符。//字符串转数组java.lang.StringStringstr="0,1,2,3,4,5";String[]arr=str.split(",");//用......
  • 三行代码规范提取字符串
       能够从一大堆字符中规范提取字符串是python语言中的基本技能之一。尤其是在使用python爬取网页数据时,规范提取字符串技术直接决定爬取数据的成败和效率。这里给大家分享一个仅用三行代码提取网址数据的方法。   以下是数据源"<divstyle='display:none'><ahref='........
  • HashCat解密成功界面提示
    一、命令行显示Status…:Cracked:代表已找到密码。二、结果输出到文件。-oout.txthashcat.exe-m13000-a3'$rar5$16$fd80c0dad768537589fd4a01167abade$15$576345a86e55ff8cd1258d28b6c5e1b5$8$ecbfa2295c0972e4'wlzhg@[email protected]三、没有用-o指定保......