IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> jasypt-spring-boot-starter 3.0.4 加密数据库用户名密码 -> 正文阅读

[Java知识库]jasypt-spring-boot-starter 3.0.4 加密数据库用户名密码

github地址:?https://github.com/ulisesbocchio/jasypt-spring-boot#update-11242019-version-300-release-includes

基于JDK8,?

pom.xml依赖

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

<dependency>
    <groupId>com.github.ulisesbocchio</groupId>
    <artifactId>jasypt-spring-boot</artifactId>
    <version>${jasypt}</version>
</dependency>

工具类:

核心注意:??PBEWITHHMACSHA512ANDAES_256? ? 3.0.0上默认使用此加密算法, ,?

? ? ? ? ? ? 使用旧的算法会解密失败。

旧的解密失败解决方法

jasypt:
? encryptor:
? ? algorithm: PBEWithMD5AndDES
? ? iv-generator-classname: org.jasypt.iv.NoIvGenerator

新的加密算法:

package com.glo.task.utils;

import org.jasypt.encryption.StringEncryptor;
import org.jasypt.encryption.pbe.PooledPBEStringEncryptor;
import org.jasypt.encryption.pbe.StandardPBEByteEncryptor;
import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;
import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig;
import org.jasypt.util.text.AES256TextEncryptor;
import org.jasypt.util.text.BasicTextEncryptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.io.UnsupportedEncodingException;


public class JasyptUtil {

  public static final StringEncryptor encryptor = stringEncryptor();


  public static void main(String[] args) throws UnsupportedEncodingException {
    String account = "root";
    String password = "123456";
    String url= "jdbc:mysql://xxx:xxx/xxx?characterEncoding=utf8&connectTimeout=5000&socketTimeout=5000&autoReconnect=true&useUnicode=true&useSSL=false";
    //秘钥
    String my = "xxxx";

    //密码进行加密
    System.out.println("加密后账号:" + encrypt(account, my));
    System.out.println("加密后密码:" + encrypt(password, my));
    System.out.println("加密后url:" + encrypt(url, my));

    //解密

    System.out.println("解密后账号:" + decrypt("i6+yH+laK8qvOnJS47vL3UAvB11wrRgyGTBKZAHY7UxsG0lKiqVaK/R7M5EhFsU9", my));
    System.out.println("解密后密码:" + decrypt("uHPu/flryc5x9bkTsExTqAii7u3pVRf9VWxgOQNyCBSB6mqP5vcOOWo9ukYR4RXJ", my));
    System.out.println("解密后url:" + decrypt("lI8FhCUR1kZ+PhnSKu5qrds2v7sHRrfgk8RU1+LGypPqexWy85iusHCtnpU/iBHg7WY+4pVfstxv5+L9T8uqmjEJsSgFfeQVWA0xnu+cDdrzNywdPdpchYsj6BpVxZ5N2JfHr0i9wyh/xSx9MivX/NsqhV5rSXpmDuVauJYCcfTWNLHVBcmF2dNSy3IoLoH5R5P5fUhJNBDJAmioyQ7W2LxMzP+4m8YRgI0Znf8fvuc=", my));
  }


   public static String encrypt(String source, String my) throws UnsupportedEncodingException {
     return encryptor.encrypt(source);

   }

  public static String decrypt(String source, String my) throws UnsupportedEncodingException {
    return encryptor.decrypt(source);
  }


  public static StringEncryptor stringEncryptor() {
    PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
    SimpleStringPBEConfig config = new SimpleStringPBEConfig();
    config.setPassword("password");
    config.setAlgorithm("PBEWITHHMACSHA512ANDAES_256");
    config.setKeyObtentionIterations("1000");
    config.setPoolSize("1");
    config.setProviderName("SunJCE");
    config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
    config.setIvGeneratorClassName("org.jasypt.iv.RandomIvGenerator");
    config.setStringOutputType("base64");
    encryptor.setConfig(config);
    return encryptor;
  }
}

截图:

数据库连接使用, 将ENC(上面生成的密钥)

如果旧的加密出现解密失败,?

或者? 出现如下图的问题, 使用 springtest调试会出现此问题, application启动则不会出现

Failed to bind properties under 'server.ssl.key-password' to java.lang.String:

解决方法: 使用旧的加密算法, 加密时也需要用此加密算法加密生成加密串

jasypt:
? encryptor:
? ? algorithm: PBEWithMD5AndDES
? ? iv-generator-classname: org.jasypt.iv.NoIvGenerator

JCE 安装:

https://www.oracle.com/java/technologies/javase-jce8-downloads.html

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-05-07 11:02:36  更:2022-05-07 11:03:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 23:54:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码