将 SHA-256 散列从 Mule 3 转换为 Mule 4 时出现问题

Trouble converting SHA-256 hashing from Mule 3 to Mule 4

有谁知道 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 的编码——假设它是一个 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 MEL 表达式也是一个 Java 句子,应该也适用于 Groovy.

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

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