HashCalc在顶部有一个名为“数据格式”的字段,我将其切换为“HexString”,然后9a
在数据字段中输入测试值。我在其上运行 SHA-1 哈希,答案是:13cba177bcfad90e7b3de70616b2e54ba4bb107f
(注意:在线哈希器会将“9a”作为字符串进行哈希处理,导致答案为e8eef065fb7295044d65b305bab18a9a645d1abf
。这对于此应用程序是错误的)
现在,我需要将这种类型的散列嵌入到我的 Java 程序中。这是我到目前为止得到的(包装在 try/catch 中):
String ss = "9a";
ByteBuffer bb = ByteBuffer.allocate(8);
byte[] ba = bb.putLong(Long.decode("0x"+ss).longValue()).array();
MessageDigest md = MessageDigest.getInstance("SHA-1");
String results = encodeHex(md.digest(ba));
System.out.println("sha:"+results);
但是,我的结果是E73C417858807239DD5BC30BA978C14D57F80834
我究竟做错了什么?
编辑:添加了十六进制标签,很明显数据必须是某种十六进制格式。因为 HashCalc 必须设置为“HexString”而不是“TextString”,它返回不同的结果。解决方案很可能包括改变我处理这些十六进制数字的方式。--> 原来是真的