zoukankan      html  css  js  c++  java
  • SpringBoot进阶教程(六十三)Jasypt配置文件加密

    数据库密码直接明文写在配置中,对安全来说,是一个很大的挑战。一旦密码泄漏,将会带来很大的安全隐患。尤其在一些企业对安全性要求很高,因此我们就考虑如何对密码进行加密。本文着重介绍Jasypt对SpringBoot配置文件加密。

    v引入maven

            <dependency>
                <groupId>com.github.ulisesbocchio</groupId>
                <artifactId>jasypt-spring-boot-starter</artifactId>
                <version>3.0.3</version>
            </dependency>

    v生成加密串

    将连接数据库的用户名和密码进行加密

        public static void main(String[] args) {
            BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
            //加密所需的salt(盐)
            textEncryptor.setPassword("Bt%XJ^n1j8mz");
            //要加密的数据(数据库的用户名或密码)
            String username = textEncryptor.encrypt("toutou");
            String password = textEncryptor.encrypt("demo123456");
            System.out.println("username:"+username);
            System.out.println("password:"+password);
        }

    输出结果如下:

    将用户名和密码加密对应生成的结果复制下来,后面会用到。

    v配置properties

    将生成的加密串配置ENC(加密串)到application.properties中

    #数据库相关配置
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mytest?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&serverTimezone=GMT%2b8
    # 加密所需的salt(盐)
    #jasypt.encryptor.password=Bt%XJ^n1j8mz
    # 默认加密方式PBEWithMD5AndDES,可以更改为PBEWithMD5AndTripleDES
    #jasypt.encryptor.algorithm=PBEWithMD5AndDES
    spring.datasource.username=ENC(d/qt1SXvttpkiugIzTYkxg==)
    spring.datasource.password=ENC(rhT6VNpoRUkQYYOHAQ58V4/+fkj9CWfT)
    spring.datasource.max-idle=10
    spring.datasource.max-wait=10000
    spring.datasource.min-idle=5
    spring.datasource.initial-size=5

    v动态salt(盐)值

    解密秘钥也在配置文件里头啊,别人拿到你服务器上面的部署代码后,不是很轻松的就可以解开这个密码了?

    为了防止salt(盐)泄露,反解出密码.删除掉application.properties中的 jasypt.encryptor.password 可以在本地运行中加参数。如下图:

    SpringBoot进阶教程(六十三)Jasypt配置文件加密

    或是在项目部署的时候使用命令传入salt(盐)值。

    打包时隐藏jasypt.encryptor.password,就需要打包时maven命令增加参数 clean package -Djasypt.encryptor.password=Bt%XJ^n1j8mz 。不加参数的话打包就会报错。如下图:

    SpringBoot进阶教程(六十三)Jasypt配置文件加密

    然后在部署时添加参数 Djasypt.encryptor.password

    部署时完整命令: java -jar -Djasypt.encryptor.password=Bt%XJ^n1j8mz hello-0.0.1-SNAPSHOT.jar

    v博客总结

    数据加密,是一门历史悠久的技术,指通过加密算法和加密密钥将明文转变为密文,而解密则是通过解密算法和解密密钥将密文恢复为明文。它的核心是密码学。数据加密仍是计算机系统对信息进行保护的一种最可靠的办法。它利用密码技术对信息进行加密,实现信息隐蔽,从而起到保护信息的安全的作用。

    安全重于泰山。

    v源码地址

    https://github.com/toutouge/javademosecond/tree/master/AllSample

    其他参考资料:

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


    作  者:请叫我头头哥
    出  处:http://www.cnblogs.com/toutou/
    关于作者:专注于基础平台的项目开发。如有问题或建议,请多多赐教!
    版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
    特此声明:所有评论和私信都会在第一时间回复。也欢迎园子的大大们指正错误,共同进步。或者直接私信
    声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是作者坚持原创和持续写作的最大动力!

  • 相关阅读:
    cf D. Vessels
    cf C. Hamburgers
    zoj 3758 Singles' Day
    zoj 3777 Problem Arrangement
    zoj 3778 Talented Chef
    hdu 5087 Revenge of LIS II
    zoj 3785 What day is that day?
    zoj 3787 Access System
    判断给定图是否存在合法拓扑排序
    树-堆结构练习——合并果子之哈夫曼树
  • 原文地址:https://www.cnblogs.com/toutou/p/Jasypt.html
Copyright © 2011-2022 走看看