HMACSHA256加密算法在不同系统下会得出不同值吗?
事情是这样的,程序开发完毕之后,添加了一些测试案例,其中一个案例是对比加密数据,判断数据是否有效。
加密函数大致如下:
private String generate(String message) {
byte[] hmacSha256 = null;
String secretKey = "secretKey";
Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
SecretKeySpec secretKeySpec = new SecretKeySpec(secretKey.getBytes("UTF-8"), "HmacSHA256");
sha256_HMAC.init(secretKeySpec);
hmacSha256 = sha256_HMAC.doFinal(message.getBytes("UTF-8"));
return ntpProperties.getPriceCheckPrefix() + DatatypeConverter.printHexBinary(hmacSha256);
}
这个函数算出来的值会和发送过来的加密数据比对,如果相同就表示有效数据。
在windows机器上面,测试案例都正常,在不同的机器上面都测试国,但是到linux上面之后,测试直接挂掉了,根据结果,判断应该是这个函数返回值和windows机器上面不一样,要命的是,因为测试机器没有权限,都看不到日志数据。
这里想问一下DatatypeConverter.printHexBinary 这个函数转换在不同的系统下面,会出问题吗?还是需要自己写?我看网上很多案例都是自己写的。