SHA1 Hash on Hex String

2020-07-18 10:23发布

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?

Thanks, Binyamin

2条回答
虎瘦雄心在
2楼-- · 2020-07-18 11:11

Basically you just need to find a hex parser - there are plenty around, with one example here, or Apache Commons Codec for this and other conversions. While Java bytes are indeed signed, you'll get the same bit pattern as if they were unsigned, so they'll have the same way. Unless you're performing your own arithmetic/bit-shifting on byte values, you can usually ignore the fact that bytes are signed in Java.

查看更多
淡お忘
3楼-- · 2020-07-18 11:16

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

After it use

byte[] data = hexStringToByteArray(hexData);
MessageDigest md = MessageDigest.getInstance("SHA-1");
md.update(data, 0, data.length);
byte[] sha1hash = md.digest();
查看更多
登录 后发表回答