我正在尝试将哈希转换为大整数,以便进行一些计算。在这方面,我成功了,但另一方面,我需要能够将大整数转换回哈希以进行验证。但我无法成功地进行转换,请参考下面的代码和输出。请给出建议并提供帮助。
以下是代码:
//convert hash to bytes then to big int to mod pow
BigInteger hashy = new
BigInteger(hash.getBytes(StandardCharsets.ISO_8859_1));
System.out.println("hashy: " +hashy);
//test if convert back to big int works
String convertedBackHash = (hashy.toByteArray()).toString();
System.out.println("hash to hashy to hash: " + convertedBackHash);
这是输出结果
hash: d1bb961ac85f6d9ae66b469b5cabe83f9f88e4ee
hashy: 835979497806227327262557895525398820611883198135120938003873334575862278693562754177889725605221
hash to hashy to hash: [B@60e53b93
有人知道出了什么问题吗?
[B@60e53b93
,你正在使用错误的toString()
方法。你得到了二进制数组B
在内存中的十六进制地址@
。 - rossumArray.toString()
,也不是“以十六进制格式表示数组对象”。他正在使用从Object.toString()
继承的byte[].toString()
,它返回对象的类,后跟其十六进制的hashCode()
。 - user207421