spring cloud server 加密测试
1. 引入spring cloud server 依赖:
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-config-server -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
<version>版本自选</version>
</dependency>
2. 使用jdk 自带keytool生成密钥对
keytool -genkeypair -alias myalias -keyalg RSA -dname "CN=Web Server,OU=China,O=www.imobpay.com,L=Beijing,S=Beijing,C=China" -keypass biteme -keystore config-service.jks -storepass pwddd
3. 把生成的config-service.jks 放入项目路径

4. 在pom.xml 中加入如下配置:
<build> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> <excludes> <exclude>**/*.jks</exclude> </excludes> </resource> <resource> <directory>src/main/resources</directory> <filtering>false</filtering> <includes> <include>**/*.jks</include> </includes> </resource> </resources> </build>
5. 测试代码如下:
import org.springframework.cloud.config.server.encryption.KeyStoreTextEncryptorLocator;
import org.springframework.core.io.ClassPathResource;
import org.springframework.security.crypto.encrypt.TextEncryptor;
import org.springframework.security.rsa.crypto.KeyStoreKeyFactory;
import java.util.Collections;
/**
* @author margo
* @title
* @description 描述
* @date 2020/6/18 19:32
*/
public class EncryptConfig {
public static TextEncryptor textEncryptor() {
KeyStoreTextEncryptorLocator locator = new KeyStoreTextEncryptorLocator(
new KeyStoreKeyFactory(new ClassPathResource("config-service.jks"),
"pwddd".toCharArray()),
"biteme", "myalias");
TextEncryptor textEncryptor = locator.locate(Collections.<String, String>emptyMap());
return textEncryptor;
}
public static void main(String[] args) {
TextEncryptor encryptor = textEncryptor();
boolean b = encryptor.decrypt(encryptor.encrypt("foo")).equals("foo");
System.out.println("b = " + b);
}
}
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import org.junit.Test;
import org.springframework.core.io.ClassPathResource;
import org.springframework.security.crypto.encrypt.TextEncryptor;
import org.springframework.security.rsa.crypto.KeyStoreKeyFactory;
import static org.assertj.core.api.Assertions.assertThat;
/**
* @author Dave Syer
*
*/
public class KeyStoreTextEncryptorLocatorTests {
private KeyStoreTextEncryptorLocator locator = new KeyStoreTextEncryptorLocator(
new KeyStoreKeyFactory(new ClassPathResource("server.jks"),
"letmein".toCharArray()),
"changeme", "mytestkey");
@Test
public void testDefaults() {
TextEncryptor encryptor = this.locator
.locate(Collections.<String, String>emptyMap());
assertThat(encryptor.decrypt(encryptor.encrypt("foo"))).isEqualTo("foo");
}
@Test
public void testDifferentKeyDefaultSecret() {
this.locator.setSecretLocator(new SecretLocator() {
@Override
public char[] locate(String secret) {
assertThat(secret).isEqualTo("changeme");
// The actual secret for "mykey" is the same as the keystore password
return "letmein".toCharArray();
}
});
TextEncryptor encryptor = this.locator
.locate(Collections.<String, String>singletonMap("key", "mykey"));
assertThat(encryptor.decrypt(encryptor.encrypt("foo"))).isEqualTo("foo");
}
@Test
public void testDifferentKeyAndSecret() {
Map<String, String> map = new HashMap<String, String>();
map.put("key", "mytestkey");
map.put("secret", "changeme");
TextEncryptor encryptor = this.locator.locate(map);
assertThat(encryptor.decrypt(encryptor.encrypt("foo"))).isEqualTo("foo");
}
@Test
public void testDefaultEncryptor() {
TextEncryptor encryptor1 = this.locator
.locate(Collections.<String, String>emptyMap());
TextEncryptor encryptor2 = this.locator
.locate(Collections.<String, String>emptyMap());
assertThat(encryptor1).isEqualTo(encryptor2);
}
}
本文来自博客园,作者:margo,转载请注明原文链接:https://www.cnblogs.com/ZMargo/articles/13161508.html

浙公网安备 33010602011771号