Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring云配置服务器的自定义加密/解密_Spring_Spring Boot_Spring Cloud Config - Fatal编程技术网

Spring云配置服务器的自定义加密/解密

Spring云配置服务器的自定义加密/解密,spring,spring-boot,spring-cloud-config,Spring,Spring Boot,Spring Cloud Config,我正在使用SpringCloudConfigServer并尝试使用加密/解密功能。我们是否有办法自定义加密/解密功能,即我们有自己的加密标准,并希望利用这些库 提前感谢您的帮助。如果您想自定义加密/解密,基本上您需要自己自定义org.springframework.security.crypto.encrypt.TextEncryptorbean 乐观地说,从application.properties/application.yml中删除所有与entrypt相关的配置,还需要确保JCE不在类路

我正在使用SpringCloudConfigServer并尝试使用加密/解密功能。我们是否有办法自定义加密/解密功能,即我们有自己的加密标准,并希望利用这些库


提前感谢您的帮助。

如果您想自定义加密/解密,基本上您需要自己自定义
org.springframework.security.crypto.encrypt.TextEncryptor
bean

乐观地说,从application.properties/application.yml中删除所有与entrypt相关的配置,还需要确保JCE不在类路径中,主要建议是禁用spring默认加密自动配置,然后注册您自己的
textcryptor
bean

这里我添加了一个非常简单的示例,这样您就可以用现有库实现
mytextcencryptor

样本

@SpringBootApplication
@EnableConfigServer
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Component
    static class MyTextEncryptor implements TextEncryptor {

        @Override
        public String encrypt(String text) {
            return "encrypt\n";
        }

        @Override
        public String decrypt(String encryptedText) {
            return "decrypt\n";
        }
    }
}
结果

参考资料:

org.springframework.cloud.bootstrap.encrypt.EncryptionBootstrapConfiguration
org.springframework.cloud.bootstrap.encrypt.EnvironmentDecryptApplicationInitializer

org.springframework.cloud.config.server.encryption.EncryptionController

如果您想自定义加密/解密,基本上您需要自己自定义
org.springframework.security.crypto.encryption.TextEncryptor
bean

乐观地说,从application.properties/application.yml中删除所有与entrypt相关的配置,还需要确保JCE不在类路径中,主要建议是禁用spring默认加密自动配置,然后注册您自己的
textcryptor
bean

这里我添加了一个非常简单的示例,这样您就可以用现有库实现
mytextcencryptor

样本

@SpringBootApplication
@EnableConfigServer
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Component
    static class MyTextEncryptor implements TextEncryptor {

        @Override
        public String encrypt(String text) {
            return "encrypt\n";
        }

        @Override
        public String decrypt(String encryptedText) {
            return "decrypt\n";
        }
    }
}
结果

参考资料:

org.springframework.cloud.bootstrap.encrypt.EncryptionBootstrapConfiguration
org.springframework.cloud.bootstrap.encrypt.EnvironmentDecryptApplicationInitializer

org.springframework.cloud.config.server.encryption.EncryptionController

谢谢李平提供的指针,我定义了自定义TextEncryptor,但当我在/encrypt端点上卷曲时,当前面临问题“{”状态:“没有密钥”,“描述”:“没有为加密服务安装密钥”)。一旦我解决了这个问题,就会更新。@Swappy我更新了一个非常简单的示例,希望这能对您有所帮助。非常感谢@Liping提供的代码片段。我编写了类似的示例,但从encrypt函数返回了相同的函数变量“text”(只是尝试返回相同的值进行测试)。我的观察结果是,调用加密函数时,其值为“FOO”,如果返回“FOO”,则会出现“NO_KEY”错误,但如果传入的FOO更改为其他值,例如FOOBAR,则会再次调用加密函数,实际值为加密值。感谢李平提供指针,我定义了自定义TextEncryptor,但当我在/encrypt端点上卷曲时,当前面临问题“{”状态“:“NO_KEY”,“description:“没有为加密服务安装密钥”}”。一旦我解决了这个问题,就会更新。@Swappy我更新了一个非常简单的示例,希望这能对您有所帮助。非常感谢@Liping提供的代码片段。我编写了类似的示例,但从encrypt函数返回了相同的函数变量“text”(只是尝试返回相同的值进行测试)。我的观察结果是,调用加密函数时,其值为“FOO”,如果返回“FOO”,则会出现“NO_KEY”错误,但如果传入的FOO更改为其他值,例如FOOBAR,则会再次调用加密函数,并使用要加密的实际值。