当我尝试在java和javascript中创建类似的函数来输出hmacsha256加密的base64字符串时,给出的输出是不同的。
javascript语言
var dataToSign = "message";
var secret = "secret";
function generateAuthHeader(dataToSign){
var hash = CryptoJS.HmacSHA256(dataToSign,secret);
return hash.toString(CryptoJS.enc.Base64);
哪些输出
+eZuF5tnR65UEI+C+K3os8Jddv0wr95sOVgixTAZYWk=
java
String key="secret";
String dataToSign = "message";
Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
SecretKeySpec secret_key = new SecretKeySpec(key.getBytes("UTF-8"), "HmacSHA256");
sha256_HMAC.init(secret_key);
System.out.println(Base64.getEncoder().encodeToString(sha256_HMAC.doFinal(dataToSign.getBytes("UTF-8"))));
哪些输出
i19IcCmVwVmMVz2x4hhmqbgl1KeU0WnXBgoDYFeWNgs=
我的代码有错误吗?
1条答案
按热度按时间arknldoa1#
它的价值是什么
hash
在javascript版本中sha256_HMAC.doFinal(dataToSign.getBytes("UTF-8"))
在java版本中?另外,请尝试用javascript获取base64 repr:
而不是
hash.toString
?utf-8在java版本中也不应该有什么不同,但是我会尝试删除它们,然后简单地做
getBytes()
到处都是。