gpt4 book ai didi

带有 key 的 Java HmacSHA256

转载 作者:行者123 更新时间:2023-11-28 06:10:07 28 4
gpt4 key购买 nike

我已经尝试了几个来自 stackoverflow 的链接来获取 HmacSHA256 以及使用 java 的 key ,但我总是得到

 func check(body: String) -> String {
let hash = body.hmac(HMACAlgorithm.sha256, key: Router.sigKey)
print("SIG: " + Router.sigKey)
print("result of hash. \(hash)")
return hash
}

此函数返回给定字符串中带有键的散列。 key 是:0393e944ee8108bb66fc9fa4f99f9c862481e9e0519e18232ba61b0767eee8c6

字符串是:例子

结果是:27effb76c97022497e25d3a5d7e823462f212a82d9ebba35f179071568b0c335

当我使用 this 时网站检查我的 SHA256 是否适用于相同的 key ,它返回相同的答案,所以我知道我的 swift 代码是好的。但是,当我尝试用 Java 执行此操作时,这里是源代码。

public static String HMAC_SHA(){
try {
String secret = "0393e944ee8108bb66fc9fa4f99f9c862481e9e0519e18232ba61b0767eee8c6";
String message = "example";
Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
SecretKeySpec secret_key = new SecretKeySpec(secret.getBytes(), "HmacSHA256");
sha256_HMAC.init(secret_key);
String hash = android.util.Base64.encodeToString(sha256_HMAC.doFinal(message.getBytes()), Base64.URL_SAFE);
return new String(Hex.encodeHex(hash.getBytes()));
}
catch (Exception e){
e.printStackTrace();
}
return null;
}

它返回这个:4a2d5f3764736c77496b6c2d4a644f6c312d676a526938684b6f4c5a36376f3138586b4846576977777a553d0a

这甚至与 swift 输出都不相似。我怎样才能通过上面的 swift 代码用 java 实现相同的结果,这会很有帮助!

最佳答案

    String key = "0393e944ee8108bb66fc9fa4f99f9c862481e9e0519e18232ba61b0767eee8c6";
Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
sha256_HMAC.init(new SecretKeySpec(key.getBytes(), "HmacSHA256"));
byte[] result = sha256_HMAC.doFinal("example".getBytes());
System.out.println (DatatypeConverter.printHexBinary(result));
// ONLY CONVERT TO HEX (= SWIFT) NOT FIRST TO BASE64

要求的结果

 27EFFB76C97022497E25D3A5D7E823462F212A82D9EBBA35F179071568B0C335

关于带有 key 的 Java HmacSHA256,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46988540/

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