十六进制字符串上的 SHA1 哈希 [英] SHA1 Hash on Hex String

查看:88
本文介绍了十六进制字符串上的 SHA1 哈希的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试对一个数字进行哈希处理,该数字由带有 Java 安全库的十六进制字符串表示.意思是,如果我有字符串AABBCCDD",我不想对它进行哈希处理,因为这是一个 ascii 输入,即 0x65、0x65、0x66、0x66、0x67、0x67、0x68、0x68,而是四个字节 - 0xAA、0xBB、0xCC,0xDD.我设法用诸如112233445566"之类的低值(因为字节是用 Java 签名的)来做到这一点,但在高值时失败了.

I'm trying to hash a number, represented by hex string with Java security library. Meaning, If I have the String "AABBCCDD" I want to hash it not as this is an ascii input, which is 0x65, 0x65, 0x66, 0x66, 0x67, 0x67, 0x68, 0x68, but as four bytes - 0xAA, 0xBB, 0xCC, 0xDD. I managed to do it with low values such as "112233445566" (since bytes are signed in Java) but failed with high values.

有人知道如何实现这样的事情吗?

Does someone know how to implement such thing?

谢谢,宾亚明

推荐答案

首先使用以下示例将您的十六进制转换为 byte[]:使用 Java 将十六进制转储的字符串表示转换为字节数组?

First convert your hex into byte[] using for example this: Convert a string representation of a hex dump to a byte array using Java?

使用后

byte[] data = hexStringToByteArray(hexData);
MessageDigest md = MessageDigest.getInstance("SHA-1");
md.update(data, 0, data.length);
byte[] sha1hash = md.digest();

这篇关于十六进制字符串上的 SHA1 哈希的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆