zoukankan      html  css  js  c++  java
  • 数据库用户名密码加密 jasypt的使用

    jasypt库的使用

    1.简介

    Jasypt是一个Java简易加密库,用于加密配置文件中的敏感信息,如数据库密码。jasypt库与springboot集成,在实际开发中非常方便。

    注意:

      在使用jasypt-spring-boot-starter的前提下 ,所以如果引入maven之后启动系统报错,那么可以根据版本对应情况这个角度进行排查。

    jasypt版本

    springboot版本

    2.1.0

    2.1.0

    1.5

    1.4.2

    1.5

    1.5.3

    1.8

    1.4.2

    2.添加依赖

    jasypt开发者开发了starter,添加jasypt-spring-boot-starter依赖就可以了。该库中有使用到slf4j依赖,若单独测试,需添加相应依赖,或直接添加spring-boot-starter依赖。

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

    3.添加注解

    在Application应用类上添加注解

    @EnableEncryptableProperties
    启用jasypt。

    4.配置使用

    将加密后的配置信息使用ENC函数,添加到配置文件中,应用启动加载配置文件时,会自动解密。
    Jasypt默认使用的算法为PBEWithMD5AndDES,该算法需要一个加密密钥,可以在应用启动时指定。也可以直接写入配置文件,安全性稍差。

    jasypt:
      encryptor:
        password: password
    

    5.测试示例

    5.1 准备工作

    添加依赖,应用类添加注解。

    5.2 添加加密后的属性配置

    在配置文件中加入加密后的属性配置信息,我们加密了字符串Password@1,使用的加密密钥为password,添加到application.yml文件中。

    jasypt:
      encryptor:
        password: password
    
    encrypted:
      property: ENC(uTSqb9grs1+vUv3iN8lItC0kl65lMG+8)

    5.3 添加属性解析类

    添加一个类,加载配置文件中的配置信息。

    @Service
    public class PropertyServiceForJasyptStarter {
    
    	@Value("${encrypted.property}")
    	private String property;
    
    	public String getProperty() {
    		return property;
    	}
    
    	public String getPasswordUsingEnvironment(Environment environment) {
    		return environment.getProperty("encrypted.property");
    	}
    }

    5.4 添加测试函数

    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class JasyptSimpleIntegrationTest {
    
    	@Autowired
    	PropertyServiceForJasyptStarter service;
    
    	@Autowired
    	Environment environment;
    
    	@Test
    	public void whenDecryptedPasswordNeeded_GetFromService() {
    		System.out.println("service.getProperty() = " + service.getProperty());
    
    		System.out.println("service = " + service.getPasswordUsingEnvironment(environment));
    	}
    	
    	/**
         * 生成加密密文
         * 每次加密后密文不一样
         */
        @Test
        public void testPBECli(){
            String[] args = {"input='Password@1",
                    "password=password", "algorithm=PBEWithMD5AndDES"};
            JasyptPBEStringEncryptionCLI.main(args);
        }
    }

    执行结果如下:

    service.getProperty() = Password@1
    service = Password@1

    6、加密函数

    	public static void main(String[] args) {
    		// 创建加密对象,默认 PBEWithMD5AndDES
    		BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
    		// 加密所需的密钥
    		textEncryptor.setPassword("password");
    		// 加密后的数据(数据库的用户名或密码)
    		String encData = textEncryptor.encrypt("Password@1");
    		// 解密后的数据(原数据)
    		String decData = textEncryptor.decrypt(encData);
    		System.out.println("encData: " + encData);
    		System.out.println("decData: " + decData);
    	}

    输出:

    encData: uK6xyed60q9NlSBAVb0pFyxA23TYFgtQ
    decData: Password@1

    转载自 https://blog.csdn.net/nalw2012/article/details/100122201

    更详细使用细节请参考:https://blog.csdn.net/u013905744/article/details/86508236

    假如我的博客对你有用,请你关注我一下,告诉我你来过,你的关注是我前进的动力,希望更多的人记录自己的问题,去帮助别人更是帮助自己避免再次出现这样那样的问题,谢谢你的来过!
  • 相关阅读:
    【jquery仿dataList】应用之——模仿igoogle【定制化、拖动排序,最大化、分屏】
    【jquery版.net控件—dropdownlist】附源码,欢迎大家指点、指正、拍砖!!!
    求【javascript设计模式】【高性能网站建设指南】PDF!哪位有给下啊!!!
    只言碎语总结,今后发展web前端,并分享两个项目难点解决方案。
    【jquery模仿net控件】简单的datalist控件更新,及其简单应用
    一次上机面试题带来的感悟【学习的感觉、学习的方法】
    【jquery模仿net控件】初步GridView模型实现,及其简单应用
    【HTML5初探之Web Workers】网页也能多线程
    Fiddler真乃前端大杀器!!!
    【初探HTML5之使用新标签布局】用html5布局我的博客页!
  • 原文地址:https://www.cnblogs.com/zxy-come-on/p/13804200.html
Copyright © 2011-2022 走看看