如何覆盖默认加密属性prefix/suffix?
How to override the default encrypted property prefix/suffix?
Jasypt 期望用“ENC(...)”包装加密属性。
我正在寻找一种方法来覆盖默认的 jasypt 加密 属性 前缀和后缀,如“secure[...]”。
有办法实现吗?
如果您使用纯 jasypt 库,则需要编写您自己的现有版本 EncryptableProperties
作为默认版本,仅支持 ENC(
作为前缀和 )
作为后缀。
public class EncryptableProperties extends Properties {
private final String prefix;
private final String suffix;
private final StringEncryptor encryptor;
public EncryptableProperties(final Properties defaults, final StringEncryptor encryptor,
final String prefix, final String suffix) {
super(defaults);
this.encryptor = encryptor;
this.prefix = prefix;
this.suffix = suffix;
}
public EncryptableProperties(final Properties defaults, final StringEncryptor encryptor){
this(defaults,encryptor,"ENC(", ")");
}
@Override
public String getProperty(String key) {
String value = super.getProperty(key);
return decode(value);
}
private String decode(String value) {
if (value == null) {
return value;
}
String decryptedValue = value;
if (value.startsWith(prefix) && value.endsWith(suffix)) {
int start = prefix.length();
int end = value.length() - suffix.length();
String encryptedValue = value.substring(start, end);
decryptedValue = encryptor.decrypt(encryptedValue);
}
return decryptedValue;
}
}
用法:
Properties encryptableProperties = new EncryptableProperties(properties,stringEncryptor,"CUSTOM_PREFIX(",")");
如果您使用 spring 引导集成
您可以使用以下两个属性来做到这一点
jasypt.encryptor.property.prefix
jasypt.encryptor.property.suffix
默认一个是:
jasypt.encryptor.property.prefix=ENC(
jasypt.encryptor.property.suffix=)
这些属性可用于以下库
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot</artifactId>
<version>2.0.0</version>
</dependency>
Jasypt 期望用“ENC(...)”包装加密属性。
我正在寻找一种方法来覆盖默认的 jasypt 加密 属性 前缀和后缀,如“secure[...]”。
有办法实现吗?
如果您使用纯 jasypt 库,则需要编写您自己的现有版本 EncryptableProperties
作为默认版本,仅支持 ENC(
作为前缀和 )
作为后缀。
public class EncryptableProperties extends Properties {
private final String prefix;
private final String suffix;
private final StringEncryptor encryptor;
public EncryptableProperties(final Properties defaults, final StringEncryptor encryptor,
final String prefix, final String suffix) {
super(defaults);
this.encryptor = encryptor;
this.prefix = prefix;
this.suffix = suffix;
}
public EncryptableProperties(final Properties defaults, final StringEncryptor encryptor){
this(defaults,encryptor,"ENC(", ")");
}
@Override
public String getProperty(String key) {
String value = super.getProperty(key);
return decode(value);
}
private String decode(String value) {
if (value == null) {
return value;
}
String decryptedValue = value;
if (value.startsWith(prefix) && value.endsWith(suffix)) {
int start = prefix.length();
int end = value.length() - suffix.length();
String encryptedValue = value.substring(start, end);
decryptedValue = encryptor.decrypt(encryptedValue);
}
return decryptedValue;
}
}
用法:
Properties encryptableProperties = new EncryptableProperties(properties,stringEncryptor,"CUSTOM_PREFIX(",")");
如果您使用 spring 引导集成
您可以使用以下两个属性来做到这一点
jasypt.encryptor.property.prefix
jasypt.encryptor.property.suffix
默认一个是:
jasypt.encryptor.property.prefix=ENC(
jasypt.encryptor.property.suffix=)
这些属性可用于以下库
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot</artifactId>
<version>2.0.0</version>
</dependency>