gpt4 book ai didi

javascript - Java 和 javascript 为 Base64 Hmac SHA256 生成不同的输出

转载 作者:行者123 更新时间:2023-12-05 07:13:19 31 4
gpt4 key购买 nike

当我尝试在 Java 和 javascript 中创建类似的函数来输出 Hmac SHA 256 加密的 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=

我的代码有错误吗?

最佳答案

hash在JavaScript版本中的值是什么,sha256_HMAC.doFinal(dataToSign.getBytes("UTF-8"))在Java版本中的值是什么?

此外,您能否尝试在 JavaScript 中获取 Base64 表示:

CryptoJS.enc.Base64.stringify(hash);

代替hash.toString ?

此外,UTF-8 不应在 Java 版本中产生差异,但我会尝试删除它们并简单地在所有地方执行 getBytes()

关于javascript - Java 和 javascript 为 Base64 Hmac SHA256 生成不同的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60203553/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com