当前位置: 首页 > 面试题库 >

Java方法可以为Hex中的HMAC-SHA256提供与Python方法相同的输出

谭光辉
2023-03-14
问题内容

我现在正尝试使用Java使用HMAC-
SHA256对字符串进行编码。匹配由Python使用生成的另一组编码字符串所需的编码字符串hmac.new(mySecret, myPolicy, hashlib.sha256).hexdigest()。我努力了

    Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
    SecretKeySpec secretKey = new SecretKeySpec(secret.getBytes(), "HmacSHA256");
    sha256_HMAC.init(secretKey);

    byte[] hash = sha256_HMAC.doFinal(policy.getBytes());
    byte[] hexB = new Hex().encode(hash);
    String check = Hex.encodeHexString(hash);
    String sha256 = DigestUtils.sha256Hex(secret.getBytes());

在我将它们打印出来后,hash,hexB,check和sha256没有提供与以下Python加密方法相同的结果

hmac.new(mySecret, myPolicy, hashlib.sha256).hexdigest()

因此,我尝试寻找该库或类似于上述Python函数的库。有人可以帮我吗?


问题答案:

您确定您的键和输入是相同的并且在java和python中都正确编码吗?

HMAC-SHA256在两个平台上均相同。

爪哇

Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
SecretKeySpec secretKey = new SecretKeySpec("1234".getBytes(), "HmacSHA256");
sha256_HMAC.init(secretKey);
byte[] hash = sha256_HMAC.doFinal("test".getBytes());
String check = Hex.encodeHexString(hash);
System.out.println(new String(check));

Output
24c4f0295e1bea74f9a5cb5bc40525c8889d11c78c4255808be00defe666671f

蟒蛇

print hmac.new("1234", "test", hashlib.sha256).hexdigest();

Output
24c4f0295e1bea74f9a5cb5bc40525c8889d11c78c4255808be00defe666671f


 类似资料:
  • 问题内容: 是否可以在两个不同的post方法的请求映射中使用相同的url,仅请求正文有所不同。 问题答案: 不,您不能在具有不同请求主体类型但介质类型相同的post方法的请求映射中提供相同的url。以下将不起作用: 如果您使用不同的媒体类型,那么它将。下面将工作: 您在至少一项条件上应有所不同;

  • 问题内容: 可以说我有: 我有一个 ApplicationModule ,它需要为 Rec 和 Circle 提供实例: 和 ApplicationComponent : 以这种方式使用代码-无法编译。错误说 错误:(33,20)错误:形状被绑定多次。 对我来说,这是不可行的,因为该组件正试图找到一个实例,并且它找到了两个实例,因此它不知道要返回哪个实例。 我的问题是-我该如何处理? 问题答案:

  • 问题内容: 2019年更新:自Bouncycastle 1.60起,Bouncycastle现在支持PBKDF2-HMAC- SHA256 JAVA是否有PBKDF2-HMAC-SHA256的可靠实现? 我曾经使用bouncycastle进行加密,但是它不提供PBKDF2WithHmacSHA256’。 我不想自己写加密模块。 您能推荐任何其他库或算法吗(如果我可以坚持使用bouncycastle

  • 问题内容: 我从http://tools.ietf.org/html/rfc6238借用了HMAC- SHA1 Java代码,并稍加修改以对其进行硬编码,以使用一个具有已知输出的已知密钥/消息对。 然后,我尝试在Python中编写相同的代码以验证结果,但是在Python和Java中获得了不同的值。 已知Java值很好。 Java代码: Python代码: 运行Java的结果: 运行Python的结

  • 问题内容: 我从http://tools.ietf.org/html/rfc6238借用了HMAC- SHA1 Java代码,并稍加修改以对其进行硬编码,以使用一个具有已知输出的已知密钥/消息对。 然后,我尝试在Python中编写相同的代码以验证结果,但是在Python和Java中获得了不同的值。 Java值众所周知是好的。 Java代码: Python代码: 运行Java的结果: 运行Pytho