当前位置: 首页 > 知识库问答 >
问题:

如何在Java中的哈希之上执行Base64

庄星汉
2023-03-14

我在Javascript中有以下示例,我似乎找不到Java中的等价物

var rapyd_signature = CryptoJS.enc.Hex.stringify(CryptoJS.HmacSHA256(data, key));
rapyd_signature = CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(rapyd_signature));

我所拥有的(不会给出相同的结果)

Mac hmacSHA256 = Mac.getInstance("HmacSHA256");
SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(StandardCharsets.UTF_8), "HmacSHA256");
hmacSHA256.init(secretKeySpec);
byte[] tobeEncoded =  data.getBytes(StandardCharsets.UTF_8);
String rapyd_signature = Base64.getEncoder().encodeToString(tobeEncoded);

共有1个答案

穆铭晨
2023-03-14

您初始化了hmacSHA256,但没有对其进行任何操作。

您需要通过调用hmacSHA256来实际散列数据。doFinal(最终版):

Mac hmacSHA256 = Mac.getInstance("HmacSHA256");
SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(StandardCharsets.UTF_8), "HmacSHA256");
hmacSHA256.init(secretKeySpec);

byte[] tobeEncoded = data.getBytes(StandardCharsets.UTF_8);
toBeEncoded = hmacSHA256.doFinal(toBeEncoded);

String rapyd_signature = Base64.getEncoder().encodeToString(tobeEncoded);
 类似资料:
  • 问题内容: 用Java创建哈希表(或关联数组…)的最直接方法是什么?我的google-fu提供了几个示例,但是有标准的方法吗? 有没有一种方法可以用键-值对的列表填充表,而无需为每个对分别在对象上调用add方法? 问题答案: 这两个类都可以从java.util包中找到。下面的jGuru FAQ条目 解释了两者之间的区别。

  • 问题内容: 使用Angular,如何添加由我的应用程序更新哈希或浏览器从URL栏或后退/前进按钮更新URL时触发的手表? 问题答案: 接受函数作为第一个参数,因此您可以执行以下操作: 但我会建议使用的事件,如为缺省路由器: 或用于ui路由器

  • 问题内容: 我编写了以下程序来计算Java中字符串的SHA-256哈希值: 好吧,那很好。在下一步中,我想以一种接受文件并计算其哈希值的方式来开发它。我的解决方案是在字符串数组中读取整个文件,然后在该字符串数组上调用方法。但是有两个问题: 我不知道如何将整个文件读入数组?目前,我认为我必须逐行阅读并在数组中添加新行! 上面的方法需要大文件存储空间! 这是我当前的程序来读取文件: 似乎没有一种方法可

  • 问题内容: 我有两个像下面的哈希图: 键不相同,但值相同,有时值也不相同。 我想找出与比较时不存在的值 但这使我从employeeMap中得到null。 您能帮我解决这个问题吗? 问候托尼 问题答案: 以下是完美运行的代码,比较失败的原因是映射值不同。 如果我们看到日期,则可以清楚地看到差异。 不同于 因为我将其存储为字符串。 谢谢你们的支持以及也投下反对票的人们。 :)托尼

  • 问题内容: 是否有任何方法可以在Java中生成字符串的MD5哈希? 问题答案: 你需要。 调用以获取你可以使用的MD5实例。 通过执行以下操作之一来计算哈希: 将整个输入作为并使用进行一次运算来计算哈希。 订阅通过调用一次块。添加完输入字节后,请使用计算哈希值 。 在返回的是MD5哈希值。

  • 问题内容: 我需要使用JavaScript来存储一些统计信息,就像在C#中那样: JavaScript中是否有类似的东西? 如何以这种方式存储值? 问题答案: 使用JavaScript对象作为关联数组。 关联数组:简单来说,关联数组使用String而不是Integer数字作为索引。 创建一个对象 Javascript允许您使用以下语法向对象添加属性: 相同的替代语法是: 如果您还可以使用以下语法创