六角形字符串上的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中签名的事实。