gpt4 book ai didi

java - 使用 HMAC SHA-256 和 Base64Encoder 进行签名

转载 作者:行者123 更新时间:2023-12-01 15:36:14 24 4
gpt4 key购买 nike

我尝试了很多创建签名来访问一项网络服务。

他们要求我为每个请求生成签名。

为了生成签名,我有一条消息说“abc”,一个 secret key 说“xyz”。根据他们的说法,我的签名应该被处理为以下 ruby​​ 代码

require 'base64'

require 'openssl'

secret = "xyz"

request = "abc"

digest = OpenSSL::Digest::Digest.new('sha256')

signature = Base64.encode64(OpenSSL::HMAC.digest(digest, secret, request)).chomp

signature 应该是 9ZjsfVB3k5nPNLf5he+gfyYaxNWCIJ6J8YcRpxW5GG0= 但我没有使用 Java 代码得到这个,如下所示:

 SecretKey secretKey = null;    

byte[] keyBytes = keyString.getBytes("UTF-8");

Mac mac = Mac.getInstance("HMACHSA256");

secretKey = new SecretKeySpec(keyBytes,mac.getAlgorithm());

mac.init(secretKey);

byte[] text = baseString.getBytes("UTF-8");

//mac.update(digest.digest());

byte[] encodedText = mac.doFinal(text);

return new String(Base64.encodeBase64(encodedText)).trim();

请帮我解决这个问题。

最佳答案

我运行了 Java 代码并得到了 oQLjGtDh255Vg5ix4fjVzHvFOq7TNygJRcbQ/EnF8JE=

我去了this在线网站,我得到了 oQLjGtDh255Vg5ix4fjVzHvFOq7TNygJRcbQ/EnF8JE=

我将顶部脚本作为 ruby 脚本运行,并得到了 oQLjGtDh255Vg5ix4fjVzHvFOq7TNygJRcbQ/EnF8JE=

由于这三个匹配,我建议上面的所有代码都是一致的,但您报告的值不正确。上面的 Java 代码几乎是 Java 的教科书 HMACSHA256,但我无法评论 Ruby 部分,因为我只是一个 Java 人员。

关于java - 使用 HMAC SHA-256 和 Base64Encoder 进行签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8808416/

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