六角形字符串上的SHA1哈希

我正在尝试使用Java安全库对hex字符串表示的数字进行哈希处理。 意思是,如果我有字符串“AABBCCDD”我想要哈希它不是因为这是一个ascii输入,它是0x65,0x65,0x66,0x66,0x67,0x67,0x68,0x68,但是作为四个字节 – 0xAA,0xBB, 0xCC,0xDD。 我设法用低值来实现它,例如“112233445566”(因为字节是用Java签名的)但是因为值很高而失败了。

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

谢谢,Binyamin

首先使用例如将hex转换为byte[] : 使用Java将hex转储的字符串表示转换为字节数组?

使用后

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

基本上你只需要找到一个hex解析器 – 周围有很多, 这里有一个例子 ,或者这个和其他转换的Apache Commons Codec 。 虽然Java字节确实已签名,但您将获得与无符号相同的位模式,因此它们将具有相同的方式。 除非您在字节值上执行自己的算术/位移,否则通常可以忽略字节在Java中签名的事实。