通过 xml 配置中的 spring 使用 SHA256 时出错

Error when using SHA256 via spring in xml config

我正在尝试将 java.security.MessageDigest 与 spring 一起使用。

Bean 定义...

    <spring:bean id="messageDigest" name="messageDigest" class="java.security.MessageDigest" factory-method="getInstance">
        <spring:constructor-arg value="${hash.algorithm}"/>
    </spring:bean>

这是我使用的豆...

<invoke name="invokeMessageDigestDigest" object-ref="messageDigest" method="digest" methodArguments="#[flowVars.myCustomTextOne]" methodArgumentTypes="byte[]" />

这对我有用。

问题是当我尝试在我的应用程序中的其他地方使用它时......

<invoke name="invokeMessageDigestDigest" object-ref="messageDigest" method="digest" methodArguments="#[flowVars.myCustomTextTwo]" methodArgumentTypes="byte[]" />

我明白了...

Failed to instantiate [java.security.MessageDigest]: Factory method 'getInstance' threw exception; nested exception is java.security.NoSuchAlgorithmException: SHA256 MessageDigest not available

我尝试使用 scope=prototype 为 bean 定义添加一些魔力,因为我认为它可能与 bean 实例化有关,但这并没有解决问题。

任何人都可以帮我解释一下吗?

提前致谢

根据 https://docs.oracle.com/javase/6/docs/technotes/guides/security/StandardNames.html#MessageDigest,算法的正确名称是 SHA-256。 SHA256 只是 Bouncycastle 库提供的别名