Mule 3迁移至Mule 4时SHA-256哈希计算代码的转换问题求助
Mule 4 对应实现方案
你原Mule3代码的逻辑是对varHash流变量的UTF-8编码字节数组做SHA256哈希,再将哈希字节数组转为十六进制字符串,Mule4下可以直接通过单条Set Payload组件实现,无需额外引入第三方依赖:
<set-payload value='%dw 2.0 import dw::Crypto output application/java --- Crypto::hashWith(vars.varHash encode "UTF-8", "SHA-256") as String {format: "hex"}' doc:name="Set SHA256 Hashed Payload"/>
对应逻辑说明
- Mule4中废除了
flowVars,统一使用vars获取流变量 - 内置
Crypto::hashWith方法替代原Guava类的哈希调用,避免第三方依赖兼容性问题 as String {format: "hex"}对应原byte-array-to-string-transformer的转换逻辑,输出的十六进制字符串和原Guava默认输出完全一致
如果坚持沿用原Guava实现方式,需要先在项目pom中引入Guava依赖,再使用如下配置:
<set-payload value="#[com.google.common.hash.Hashing.sha256().hashBytes(vars.varHash encode 'UTF-8').toString()]" doc:name="Set Payload"/>
内容的提问来源于stack exchange,提问作者Doug
相关产品推荐
相关产品推荐

