尝试为Spring Boot的CryptoFactoryBean实例设置密码提供程序时,需要使用扩展Apache Crypto类的类。但是,当前的Apache WSS4J加密提供程序都没有实际扩展Crypto类-它们扩展了实现CryptoBaseCrypto。在Eclipse中,以下代码将引发错误:

    @Bean
    public CryptoFactoryBean serverKeyStoreCryptoFactoryBean() throws IOException {

        CryptoFactoryBean cryptoFactoryBean = new CryptoFactoryBean();
        try {
            cryptoFactoryBean.setKeyStoreLocation(new ClassPathResource("keystore.jks"));
            cryptoFactoryBean.setKeyStorePassword(keyStorePassword);
            cryptoFactoryBean.setCryptoProvider(new Merlin());
        } catch (Exception e) {
            LOGGER.error("Crypto Factory Bean: unable to set the keystore location or password", e);
        }

        return cryptoFactoryBean;
    }


该错误表明,由于Merlin类未扩展Crypto类,因此尽管为Crypto类创建并实现了该类,但它仍不能用作加密提供程序。

我需要创建一个工厂来做到这一点吗?

最佳答案

设置加密提供程序时,您实际上需要传递类本身。例如cryptoFactoryBean.setCryptoProvider(Merlin.class);

09-11 20:05