码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Jasypt 实现自定义加解密


    如下文章已经讲解了, Jasypt 是什么,怎么集成 Jasypt,怎么使用 Jasypt。

    Jasypt 开源加密库使用教程_jasyptstringencryptor-CSDN博客Jasypt 加密框架概述1、Jasypt Spring Boot 为 spring boot 应用程序中的属性源提供加密支持,出于安全考虑,Spring boot 配置文件中的敏感信息通常需要对它进行加密/脱敏处理,尽量不使用明文,要实现这一点,办法有很多,自己手动对敏感信息进行加解密也是可以的。2、有需求就有人奉献,Jasypt 开源安全框架就是专门用于处理 Spring boot 属性加密的,在配置文件中直接配置密文,然后应用启动的时候,Jasypt 会自动将密码解密成明文供程序使用。3、_jasyptstringencryptorhttps://blog.csdn.net/wangmx1993328/article/details/106421101

    上述讲的都是属性加密,使用 ENC() 包裹,然后使用 StringEncryptor 加解密属性。这些都是默认使用方式。下面我们一起来研究一下如何自定义属性包裹方式和属性加解密方式。
    1、自定义需要加解密属性

    如果我们想要区分以 ENC@ 开头的字符,如何实现呢?

    重写 EncryptablePropertyDetector 这个 bean ,实现 isEncrypted 和 unwrapEncryptedValue 方法

    新的 bean 的名称设置为 encryptablePropertyDetector。

    1. private static class MyEncryptablePropertyDetector implements EncryptablePropertyDetector {
    2. @Override
    3. public boolean isEncrypted(String value) {
    4. if (value != null) {
    5. return value.startsWith("ENC@");
    6. }
    7. return false;
    8. }
    9. @Override
    10. public String unwrapEncryptedValue(String value) {
    11. return value.substring("ENC@".length());
    12. }
    13. }
    14. @Bean(name = "encryptablePropertyDetector")
    15. public EncryptablePropertyDetector encryptablePropertyDetector() {
    16. return new MyEncryptablePropertyDetector();
    17. }
    2、自定义属性解密方式

    如果我们不想使用 StringEncryptor 对 ENC@ 开头的属性进行解密?

    重写 EncryptablePropertyResolver ,实现 resolvePropertyValue 方法。新的 bean 的名称设置为

    encryptablePropertyResolver。

    1. class MyEncryptablePropertyResolver implements EncryptablePropertyResolver {
    2. private final PooledPBEStringEncryptor encryptor;
    3. public MyEncryptablePropertyResolver(char[] password) {
    4. this.encryptor = new PooledPBEStringEncryptor();
    5. SimpleStringPBEConfig config = new SimpleStringPBEConfig();
    6. config.setPasswordCharArray(password);
    7. config.setAlgorithm("PBEWITHHMACSHA512ANDAES_256");
    8. config.setKeyObtentionIterations("1000");
    9. config.setPoolSize(1);
    10. config.setProviderName("SunJCE");
    11. config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
    12. config.setIvGeneratorClassName("org.jasypt.iv.RandomIvGenerator");
    13. config.setStringOutputType("base64");
    14. encryptor.setConfig(config);
    15. }
    16. @Override
    17. public String resolvePropertyValue(String value) {
    18. if (value != null && value.startsWith("ENC@")) {
    19. return encryptor.decrypt(value.substring("ENC@".length()));
    20. }
    21. return value;
    22. }
    23. }
    24. @Bean(name="encryptablePropertyResolver")
    25. EncryptablePropertyResolver encryptablePropertyResolver(@Value("${jasypt.encryptor.password}") String password) {
    26. return new MyEncryptablePropertyResolver(password.toCharArray());
    27. }

    https://github.com/ulisesbocchio/jasypt-spring-boot

  • 相关阅读:
    1542_AURIX_TC275_CPU子系统_内核
    uniapp项目实践总结(十六)自定义下拉刷新组件
    java毕业生设计新冠疫苗预约系统计算机源码+系统+mysql+调试部署+lw
    【力扣-每日一题】2034. 股票价格波动
    微分方程和线性代数(先理解一阶微分形式不变性)
    编译安装、RPM和tar包等安装方式的对比
    阿里云物联网IOT平台使用案例教程(模拟智能设备)
    Netty03——进阶
    MyBatisPlus(十六)逻辑删除
    JavaScript教程第三篇(作者原创)
  • 原文地址:https://blog.csdn.net/jack1liu/article/details/133439850
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号