微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将 hmac 函数从 python 转换为 Java

如何解决将 hmac 函数从 python 转换为 Java

我想将以下 python 代码转换为相同的 java 代码。 我不确定如何使用 java 获得相同的结果。 我尝试在 apache 编解码器包中使用 hmacutils,但结果不一样。 蟒蛇代码

import hmac
import hashlib
secret_key = b"NhqPtmdsJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j"
total_params = b"/public/api/ver1/accounts/new?type=binance&name=binance_account&api_key=XXXXXX&secret=YYYYYY"
signature = hmac.new(secret_key,total_params,hashlib.sha384).hexdigest()
print("signature = {0}".format(signature))

解决方法

使用 commons-codec:commons-codec:1.15

final byte[] key = "NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j".getBytes(StandardCharsets.UTF_8);
final Mac initializedMac = HmacUtils.getInitializedMac(HmacAlgorithms.HMAC_SHA_384,key);
final byte[] bytes = "/public/api/ver1/accounts/new?type=binance&name=binance_account&api_key=XXXXXX&secret=YYYYYY".getBytes(StandardCharsets.UTF_8);
initializedMac.update(bytes);
final byte[] digest = initializedMac.doFinal();
System.out.println(Hex.encodeHexString(digest));

给我与那个 python 片段的输出匹配的输出

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。