将此代码从 python 翻译为 java

发布于 2025-01-11 14:07:59 字数 614 浏览 0 评论 0原文

我正在尝试将这段 python 代码翻译成 java,但是到目前为止我还没有运气。

hmac_key = base64.b64decode(secret)
digest = hmac.new(hmac_key, message.encode('utf-8'), digestmod=hashlib.sha256).digest()
signature = base64.b64encode(digest).decode('utf-8')

这是我当前的java实现。

byte[] hmac_key = base64().decode(secret);
String hash = Hashing.hmacSha256(hmac_key).hashString(message, StandardCharsets.UTF_8).toString();
String updatedMsg = base64().encode(hash.getBytes(StandardCharsets.UTF_8));

为什么这两段代码返回不同的输出?

I am trying to translate this piece of python code to java however I have so far had no luck.

hmac_key = base64.b64decode(secret)
digest = hmac.new(hmac_key, message.encode('utf-8'), digestmod=hashlib.sha256).digest()
signature = base64.b64encode(digest).decode('utf-8')

This is my current java implementation.

byte[] hmac_key = base64().decode(secret);
String hash = Hashing.hmacSha256(hmac_key).hashString(message, StandardCharsets.UTF_8).toString();
String updatedMsg = base64().encode(hash.getBytes(StandardCharsets.UTF_8));

Why do these two pieces of code return different outputs?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

失去的东西太少 2025-01-18 14:08:00

您正在生成的哈希上调用 toString() 方法,而不是使用 asBytes()

byte[] hmacKey = base64().decode(secret);
byte[] hash = Hashing.hmacSha256(hmacKey).hashString(message, StandardCharsets.UTF_8).asBytes();
String updatedMsg = base64().encode(hash);

You are calling toString() method on generated hash instead use asBytes()

byte[] hmacKey = base64().decode(secret);
byte[] hash = Hashing.hmacSha256(hmacKey).hashString(message, StandardCharsets.UTF_8).asBytes();
String updatedMsg = base64().encode(hash);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文