• [springboot]jasypt加密


    背景

    公司要求任何地方,不能存储数据库明文,也就是git里,不能出现数据库的密码明文配置,所以我们使用的是jasypt来做的,同时将这些配置放到了apollo来管理,所以简单介绍一下jasypt。

    介绍

    Jasypt 这个Java类包为开发人员提供一种简单的方式来为项目增加加密功能,包括:密码Digest认证,文本和对象加密,集成 hibernate,Spring Security(Acegi)来增强密码管理。

    Jasypt是一个Java库,可以使开发者不需太多操作来给Java项目添加基本加密功能,而且不需要知道加密原理。

    根据Jasypt文档,该技术可用于加密任务与应用程序,例如加密密码、敏感信息和数据通信、创建完整检查数据的sums. 其他性能包括高安全性、基于标准的加密技术、可同时单向和双向加密的加密密码、文本、数字和二进制文件。Jasypt也可以与Acegi Security整合也即Spring Security。Jasypt亦拥有加密应用配置的集成功能,而且提供一个开放的API从而任何一个Java Cryptography Extension都可以使用Jasypt。

    Jasypt还符合RSA标准的基于密码的加密,并提供了无配置加密工具以及新的、高可配置标准的加密工具。

    1. 该开源项目可用于加密任务与应用程序,例如加密密码、敏感信息和数据通信
    2. 还包括高安全性、基于标准的加密技术、可同时单向和双向加密的加密密码、文本、数字和二进制文件。
    3. Jasypt还符合RSA标准的基于密码的加密,并提供了无配置加密工具以及新的、高可配置标准的加密工具。
    4. 加密属性文件(encryptable properties files)、Spring work集成、加密Hibernate数据源配置、新的命令行工具、URL加密的Apache wicket集成以及升级文档。
    5. Jasypt也可以与Acegi Security整合也即Spring Security。Jasypt亦拥有加密应用配置的集成功能,而且提供一个开放的API从而任何一个Java Cryptography Extension都可以使用Jasypt。

    使用

    首先我们引入jar包:

            <dependency>
                <groupId>com.github.ulisesbocchio</groupId>
                <artifactId>jasypt-spring-boot-starter</artifactId>
                <version>3.0.0</version>
            </dependency>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    使用主要分为两部分,第一部分,生成密码对应的密钥

        public static void main(String[] args) {
            SimpleStringPBEConfig config = new SimpleStringPBEConfig();
            config.setPassword("加密的密钥"); //这里是密钥
            config.setAlgorithm(StandardPBEByteEncryptor.DEFAULT_ALGORITHM);
            config.setPoolSize("1");
            PooledPBEStringEncryptor encryptOr = new PooledPBEStringEncryptor();
            encryptOr.setConfig(config);
            String result = encryptOr.encrypt("此处填写要被加密的内容");
            System.out.println(result); //得到加密完的内容
        }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    第二部分,将密钥配置到配置文件
    我们进行加密的是数据库密码,相应的,当我们填写配置文件的时候,使用ENC将加密得到的内容填起来,如下:

    spring:
      env:
        active: test
      datasource:
        username: test_w
        password: ENC(gNJEJ71vFADHofwWXx9sisvzqfbU16VN/tWgV/BaoE2pa/er4UaUVFqL37VTRfrM)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    注意:此时程序直接启动是起不来的,因为程序并不知道ENC里的内容如何使用,需要告诉它密钥,也就是 config.setPassword(“加密的密钥”); 这个password可以放到配置文件里,但是这多少有点掩耳盗铃的意思了。
    因为我们部署程序使用的是docker,所以直接把密钥放到了启动命令里面,大家可以参考一下。

  • 相关阅读:
    新库上线 | CnOpenData文化、体育和娱乐业工商注册企业基本信息数据
    【C语言】指针的进阶(四)—— 企业笔试题解析
    Socks5代理与网络安全:保护您的隐私与数据
    数据结构中的七大排序(Java实现)
    腾讯云服务器CVM和轻量应用服务器区别全方位对比
    作为一名后端工程师,你知道Redis为什么这么快吗?
    C语言中 %d 与 %i 的区别
    让程序员崩溃的微信群消息置顶
    day19--Java集合02
    Fast-MVSNet CVPR-2020 学习笔记总结 译文 深度学习三维重建
  • 原文地址:https://blog.csdn.net/u013036688/article/details/125471822