首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenSSL Hmac和BouncyCastle Hmac不同

OpenSSL Hmac和BouncyCastle Hmac不同
EN

Stack Overflow用户
提问于 2014-07-02 21:39:58
回答 1查看 1.9K关注 0票数 6

我试图弄清楚为什么openssl中的hmac没有给出与java中的hmac相同的结果。

在开放ssl中

代码语言:javascript
复制
echo -n "Hello" | openssl dgst -sha256 -hmac 04d6b077d60e323711b37813b3a68a71

输出: cc598d8840fe409d5fcc1c1c856f9e8c311d1c458850615555857b023f1cd94c

在爪哇

代码语言:javascript
复制
String key = "04d6b077d60e323711b37813b3a68a71"
SecretKeySpec key2 = new SecretKeySpec(Hex.decode(key), "RAW");
String data = "Hello";
Mac hmac = Mac.getInstance("Hmac-SHA256", BouncyCastleProvider.PROVIDER_NAME);
hmac.init(key2)
byte[] bytes = hmac.doFinal(data.getBytes());
System.out.println(Hex.toHexString(bytes));

输出: 877f9c8eb44c20987e3978928fbfcea0f1cf99c88f9db904596921b7ecf0613b

我不明白为什么这些是不同的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-03 05:54:36

OpenSSL将-hmac key选项看作是一个字节数组,表示为相应的ASCII字符。因此,键仅限于包含可打印字符。

您可以在Java中获得与OpenSSL中相同的结果。

代码语言:javascript
复制
SecretKeySpec key2 = new SecretKeySpec( key.getBytes("ASCII"), "RAW" );

或者,您可以使用openssl dgst -sha256 -mac HMAC -macopt hexkey:string,其中string将被视为HEX编码密钥。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24541465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档