【问题标题】:Trouble converting SHA-256 hashing from Mule 3 to Mule 4将 SHA-256 哈希从 Mule 3 转换为 Mule 4 时遇到问题
【发布时间】:2022-01-04 15:18:12
【问题描述】:

有人知道 Mule 4 (4.4.0) 等效于以下 Mule 3 (3.9.2) 代码吗?我被卡住了……

<set-payload value="#[com.google.common.hash.Hashing.sha256().hashBytes(flowVars['varHash'].getBytes('UTF-8'))]" doc:name="Set Payload"/>
    <byte-array-to-string-transformer doc:name="Byte Array to String"/>

【问题讨论】:

  • varHash的类型是什么?

标签: groovy dataweave mule4 mule-el


【解决方案1】:

取决于 varHash 的编码 - 假设它是一个 Java 字符串 - 最简单的方法是在转换器中使用 DataWeave 内置的Crypto::hashWith() 函数:

%dw 2.0
import dw::Crypto
output application/java
---
Crypto::hashWith(vars.varHash as Binary, "SHA-256") 

如果由于编码或填充而与预期结果不匹配,那么您应该能够在 Groovy 脚本中使用 Scripting Module 在 Groovy 脚本中重现 Mule 3 表达式。 Mule 3 MEL 表达式也是一个 Java 语句,也应该在 Groovy 中工作。

请务必遵循模块和 Groovy 库的配置说明。您可能需要为 com.google.common.hash.Hashing 类添加 Maven 依赖项到您的 pom 中,我怀疑它是 Google Guava 库。

Groovy 脚本的替代方法是创建一个小型 Java 类,其中包含实现此表达式的方法。然后您可以使用 Java 模块调用它,或者如果它是一个公共静态方法,您可以从 DataWeave 调用它。

【讨论】:

  • hashWith 产生了类似的结果,但我无法匹配在 Mule 3 中使用 google 的散列类生成的内容,因此使用 google 的 Hashing 类的快速 java 类是要走的路。谢谢你,阿莱德。
  • 我用 Java 选项更新了答案
猜你喜欢
  • 1970-01-01
  • 2015-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多