首页 - 通讯 - Jasypt实现自定义加解密

Jasypt实现自定义加解密

2023-10-04 03:21
下面的文章已经解释了什么是Jasypt,如何集成Jasypt,以及如何使用Jasypt。

Jasypt开源加密库使用教程_jasyptstringencryptor-CSDN博客Jasypt加密框架概述 1.Jasypt Spring Boot 为 Spring Boot 应用中的属性源提供加密支持。出于安全考虑,敏感信息通常需要加密/脱敏,尽量不要使用明文。有很多方法可以实现这一点,您也可以自己手动加密和解密敏感信息。 2. 如果有需要,就会有人捐款。 Jasypt开源安全框架专门用于处理Spring boot属性加密。密文直接配置在配置文件中,然后当应用程序启动时,Jasypt会自动将密码解密为明文以供程序使用。 3._jasyptstring加密器
上面都是属性加密,使用ENC()对其进行包装,然后使用StringEncryptor对属性进行加解密。这些是默认用法。下面我们一起研究一下如何自定义属性包装方式和属性加解密方式。
1。自定义解密属性

重写 EncryptablePropertyDetector bean 并实现 isEncrypted 和 unwrapEncryptedValue 方法

私有静态类 MyEncryptablePropertyDetector 实现 EncryptablePropertyDetector {@Overridepublic boolean isEncrypted(String value) {if (value != null) {return value.startsWith("ENC@");}return false;}@Overridepublic String unwrapEncryptedValue(String value) {return value.substring("ENC@".length());}
}@Bean(名称 = "encryptablePropertyDetector")
公共 EncryptablePropertyDetector encryptablePropertyDetector() {返回新的 MyEncryptablePropertyDetector();
}
2、自定义属性解密方式

重写 EncryptablePropertyResolver ,实现 resolvePropertyValue 方法。

类 MyEncryptablePropertyResolver 实现 EncryptablePropertyResolver {私有最终 PooledPBEStringEncryptor 加密器;public MyEncryptablePropertyResolver(char[] 密码) {this.cryptor = new PooledPBEStringEncryptor();SimpleStringPBEConfig config = new SimpleStringPBEConfig();config.setPasswordCharArray(password);config.setAlgorithm( "PBEWITHHMACSHA512ANDAES_256");config.setKeyObtentionIterations("1000");config.setPoolSize(1);config.setProviderName("SunJCE");config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");config.setIvGeneratorClassName(" org.jasypt.iv.RandomIvGenerator");config.setStringOutputType("base64");encryptor.setConfig(config);}@Overridepublic StringresolvePropertyValue(String value) {if (value != null && value.startsWith("ENC@ ")) {return encryptor.decrypt(value.substring("ENC@".length()));}返回值;}
}@Bean(名称=“cryptablePropertyResolver”)EncryptablePropertyResolver encryptablePropertyResolver(@Value("${jasypt.encryptor.password}") 字符串密码) {return new MyEncryptablePropertyResolver(password.toCharArray());
}

https://www.gsm-guard.net/ulisesbocchio/jasypt-spring-boot