spring boot数据库密码加密几种方式

第一种Jasypt加密

1.maven依赖,不同的spring boot版本引入的jasypt版本不同

<!-- Jasypt加密 -->
spring boot 版本号1依赖
<dependency>
    <groupId>com.github.ulisesbocchio</groupId>
    <artifactId>jasypt-spring-boot-starter</artifactId>
    <version>2.0.0</version>
</dependency>
spring boot 版本号2依赖
<dependency>
    <groupId>com.github.ulisesbocchio</groupId>
    <artifactId>jasypt-spring-boot-starter</artifactId>
    <version>3.0.3</version>
</dependency>

2. 在配置中心增加相关配置

jasypt.encryptor.password=henghe #加密密钥 

或者

为了防止salt(盐)泄露,反解出密码.可以在项目部署的时候使用命令传入salt(盐)值:
java -jar xxx.jar -Djasypt.encryptor.password=henghe

3.将application.yml或配置中心中重要的配置改为加密格式

 password: ENC(tnJpIM6iACWO/wRI//7XsbBqy/Mpx6MG1hXe4S7U4cNWmGhajnUSeXmBmQiniKEU)

4.springboot程序在启动会自动检测appliction.yml或者配置中心中有ENC(xx)的配置并做解密
5.加解密的测试类

import org.jasypt.encryption.pbe.PooledPBEStringEncryptor;
import org.jasypt.encryption.pbe.StandardPBEByteEncryptor;
import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig;

/**
 * @Created with Intellij IDEA
 * @Author : 
 * @Date : 2018/5/18 - 10:37
 * @Copyright (C), 2018-2018
 * @Descripition : Jasypt安全框架加密类工具包
 */
public class JasyptUtils {
   

    /**
     * Jasypt生成加密结果
     *
     * @param password 配置文件中设定的加密密码 jasypt.encryptor.password
     * @param value    待加密值
     * @return
     */
    public static String encryptPwd(String password, String value) {
   
        PooledPBEStringEncryptor encryptOr = new PooledPBEStringEncryptor();
        encryptOr.setConfig(cryptOr(password));
        String result = encryptOr.encrypt(value);
        return result;
    }

    /**
     * 解密
     *
     * @param password 配置文件中设定的加密密码 jasypt.encryptor.password
     * @param value    待解密密文
     * @return
     */
    public static String decyptPwd(String password, String value) {
   
        PooledPBEStringEncryptor encryptOr = new PooledPBEStringEncryptor();
        encryptOr.setConfig(cryptOr(password));
        String result = encryptOr.decrypt(value);
        return result;
    }

    /**
     * @param password salt
     * @return
     */
    public static SimpleStringPBEConfig cryptOr(String password) {
   
        SimpleStringPBEConfig config = 
  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
分组密码加密模式是一种将明文分块加密的方法,常见的分组密码加密模式包括以下几种: 1. 电子密码本模式 (Electronic Codebook, ECB):将明文分成固定大小的块,每个块独立地使用相同的密钥进行加密,相同的明文块将产生相同的密文块。由于每个块独立加密,ECB 模式在安全性和抗攻击性方面存在一些问题,因此在实际中较少使用。 2. 密码分组链接模式 (Cipher Block Chaining, CBC):在 CBC 模式中,每个明文块会与前一个密文块进行异或运算,然后再进行加密。这种链接方式使得每个密文块都依赖于之前的所有明文块,提高了安全性。为了保证第一个明文块的安全性,还需要引入初始化向量 (IV)。 3. 密文反馈模式 (Cipher Feedback, CFB):CFB 模式将前一个密文块作为输入与密钥生成器进行加密运算,然后与当前明文块进行异或运算得到当前密文块。这种模式不需要填充明文,可以处理变长的数据。 4. 输出反馈模式 (Output Feedback, OFB):OFB 模式将前一个输出作为输入与密钥生成器进行加密运算,然后与当前明文块进行异或运算得到当前密文块。与 CFB 类似,OFB 也可以处理变长的数据。 5. 计数器模式 (Counter, CTR):CTR 模式将一个计数器与密钥生成器进行加密运算,然后与明文块进行异或运算得到密文块。计数器可以作为输入参数,从而可以并行地加密或解密多个块。 这些分组密码加密模式在实际中根据应用需求和安全性要求的不同选择使用。需要注意的是,在使用这些模式时,必须合理选择和管理密钥和初始化向量,以保证加密的安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

这个操蛋的人生!!!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值