首页 > 其他分享 >SpringBoot 使用jasypt 对敏感字段加密

SpringBoot 使用jasypt 对敏感字段加密

时间:2023-07-21 10:23:52浏览次数:56  
标签:username 加密 SpringBoot jasypt jar 秘钥 password

    com.github.ulisesbocchio
    jasypt-spring-boot-starter
     2.1 . 2 

如果Spring Boot项目中使用了@SpringBootApplication或者@EnableAutoConfiguration,在项目里添加jasypt-spring-boot-starter依赖会自动对项目中整个属性(包括系统属性,环境属性, 命令行参数, application.properties, yaml)启动加密。

一.测试生成密文

敏感信息明文存储会带有一定的安全隐患,加密秘钥的使用尽量还是放到内部代码里或者进行外部传入使用,而不是直接配置到配置文件里定义

1.通过代码生成

    public static void main(String[] args) {

        BasicTextEncryptor textEncryptor =  new BasicTextEncryptor();

//加密所需的salt(盐)PBEWithMD5AndDES
        textEncryptor.setPassword( "test" );
//要加密的数据(数据库的用户名或密码)
        String username = textEncryptor.encrypt( "root" );

        System.out.println( "username:" + username);
        System.out.println( "username:" + textEncryptor.decrypt(username));

    }

  2.cmd窗口打开命令窗口,输入命令: 

java -cp **\jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="root" password=allanpassword algorithm=PBEWithMD5AndDES

java –cp jar包所在路径\jar包 org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input=”数据库密码” password=密钥   algorithm=默认PBEWithMD5AndDES加密

参数说明:
input =需要加密的字段值
password=密钥,随意设置(配置文件中需要添加此密码,相当于约定密码)
algorithm= 算法,默认PBEWithMD5AndDES

二.解密

1.在服务器上启动
方式1、把秘钥当做程序启动时环境变量(推荐),示例如下:

java -Djasypt.encryptor.password=秘钥 -jar xxx.jar

方式2、把秘钥当做程序启动时的命令行参数(推荐),示例如下:

java -jar xxx.jar --jasypt.encryptor.password=秘钥

使用idea在本地启动

2.在IDEA中测试的时候需要在运行配置加上

-Djasypt.encryptor.password=xxxx

三.配置实现

将生成的加密内容配置在之前的值的位置,外面加上ENC(加密后的值)

四.可能遇到的问题

版本不兼容

 

 

参考:https://goshare.site/article/29863

https://blog.csdn.net/weixin_49076592/article/details/119797675?spm=1001.2014.3001.5502

 

标签:username,加密,SpringBoot,jasypt,jar,秘钥,password
From: https://www.cnblogs.com/first131/p/17568412.html

相关文章

  • idea 在springboot添加本地jar包的方法
    虽然现在Maven很方便,但还是会有一些jar是不开源的,也就是说在Maven仓库中是下载不到的,比如对接阿里云、通联等,这个时候就需要我们手动将这些jar包下载下来,然后手动添加到我们的项目中1、先下载好自己需要的jar包,如下: 2、在SpringBoot中的resources目录新建一个lib目录,将这些ja......
  • 对java被引用的jar包加密
    对Java被引用的JAR包加密在Java开发过程中,我们经常引用各种第三方库的JAR包来实现各种功能。然而,有时我们希望对这些被引用的JAR包进行加密,以保护代码的安全性和知识产权。本文将介绍如何对Java被引用的JAR包进行加密,并提供相关的代码示例。为什么需要加密JAR包Java的JAR包是一......
  • springboot插件式开发 springboot-plugin-framework-v2.4.5使用文档
    功能介绍简介介绍此框架可在SpringBoot项目上开发出用于扩展项目的插件,可在插件模块中单独定义接口、静态文件、mybatis-xml等扩展功能。核心功能插件配置式插拔于springboot项目。在springboot上可以进行插件式开发,扩展性极强,可以针对不同项目开发不同插件,进行不同插件jar包......
  • springboot
    这几天查阅了几十篇文章,总结了springboot的一些心得。一.Spring Boot 是什么从 2002 年开始,Spring 一直在飞速的发展,如今已经成为了在 Java EE 开发中真正意义上的标准,但是随着技术的发展,Java EE 使用 Spring 逐渐变得笨重起来,大量的 XML 文件存在于项目之中......
  • gpg 加密尝试
    1.gpg加密分为对称加密,和非对称加密对称加密:使用同一个key去解密;#gpg-e 输入password加密#gpg-d输入password解密非对称加密:他人用我的公钥来加密,我自己用私钥来解密 2.非对称加密:比如:在hostB主机上用公钥加密,在hostA主机上解密2.1在主机A上使......
  • springboot元注解@Target@Retention@Documented
        @Target(ElementType.METHOD)是一个元注解,用来标注注解的作用目标。这里的@Target(ElementType.METHOD)表示该自定义注解可以用于方法上。@Retention(RetentionPolicy.RUNTIME)是一个元注解,用来标注注解的保留策略。这里的@Retention(RetentionPolicy.RUNTIME)表......
  • springboot学习之十一(统一返回结果)
    SpringBoot统一返回结果在实际开发中,为了降低开发人员之间的沟通成本,一般返回结果会定义成一个统一格式,具体的格式根据实际开发业务不同有所区别,但至少包括三要素:code状态码:由后端统一定义各种返回结果的状态码message描述:本次接口调用的结果描述data数据:本次返回的数据。{......
  • springboot i18n 国际化
    默认一:1、配置#主Springspring:messages:basename:i18n.rsltMessage,i18n.errorCodeMessage 2、多语言文件在resources下新建i18n文件夹 ,在在这个下面建立多语言:rsltMessage.propertiesrsltMessage_ar_SA.propertiesrsltMessage_en_US.propertiesrsltMe......
  • 使用Jmeter轻松实现AES加密测试
    https://blog.csdn.net/m0_67695717/article/details/126723189   大家在自己公司做接口测试的时候,有没有遇到过接口做加密处理的情况呢?相信我们的读者朋友们都有一定的概率会遇到这种情况,尤其是对接口数据安全有一定要求的公司接口数据一定会做加密处理。那么遇到加密情况......
  • Vue+springboot集成PageOffice实现在线编辑Word、excel文档
    说明:PageOffice是一款在线的office编辑软件,帮助Web应用系统或Web网站实现用户在线编辑Word、Excel、PowerPoint文档。可以完美实现在线公文流转,领导批阅,盖章。可以给文件添加水印,在线安全预览防止用户下载和复制文件等一、环境要求前端Vue项目:Node.js10及以上版本(当前集成方式......