jasypt数据库加密密码代码

2023-10-11 12:52

本文主要是介绍jasypt数据库加密密码代码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

代码
package com.XXXIII.www.common.utils;
import java.nio.charset.Charset;import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;
import org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig;
import org.jasypt.util.text.BasicTextEncryptor;public class DesUtil {public static final String  SKEY    = "abcdefgh";public static final Charset CHARSET = Charset.forName("UTF-8");/**加密*/public static String encrypt(String srcStr, Charset charset, String sKey) {byte[] src = srcStr.getBytes(charset);byte[] buf = Des.encrypt(src, sKey);return Des.parseByte2HexStr(buf);}/** 解密*/public static String decrypt(String hexStr, Charset charset, String sKey) throws Exception {byte[] src = Des.parseHexStr2Byte(hexStr);byte[] buf = Des.decrypt(src, sKey);return new String(buf, charset);}public static void main(String[] args) {BasicTextEncryptor textEncryptor = new BasicTextEncryptor();//加密所需的salt(盐)textEncryptor.setPassword("xxx");//要加密的数据(数据库的用户名或密码)String password  =  textEncryptor.decrypt("bb8+c9eD9QofD+vMViXX+FeD1rGexEze");//  System.out.println("username:"+username);System.out.println("password:"+password);//加密工具StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();//加密配置EnvironmentStringPBEConfig config = new EnvironmentStringPBEConfig();config.setAlgorithm("PBEWithMD5AndDES");//自己在用的时候更改此密码config.setPassword("XXXIII");//应用配置encryptor.setConfig(config);String plaintext="XXX@";//加密String ciphertext=encryptor.encrypt(plaintext);System.out.println(plaintext + " : " + ciphertext);}
}
加密原理

Jasypt是一个开源的Java库,用于加密和解密敏感数据,如密码、数据库连接字符串等。
它通过使用强大的加密算法和安全的编码技术,保护了敏感数据的安全性。
Jasypt的加密原理基于对称加密算法和非对称加密算法的组合使用。
对称加密算法是指加密和解密使用相同密钥的算法,这种算法的特点是加密和解密速度快,但密钥的安全性较低。
非对称加密算法则需要使用一对密钥,分别为公钥和私钥,公钥用于加密,私钥用于解密。非对称加密算法的优点是密钥的安全性较高,但加密和解密速度较慢。

而 在Jasypt中,首先需要选择合适的加密算法和编码技术。
目前,Jasypt支持多种加密算法,如AES、DES、Blowfish等
并且可以选择不同的加密模式和填充方式。同时,
Jasypt还支持Base64、Hex等编码技术
用于将加密后的数据转换为可打印字符。 在使用Jasypt进行加密和解密操作时,首先需要创建一个加密器对象。加密器对象需要指定加密算法、密钥和编码技术等参数。然后,可以使用加密器对象对敏感数据进行加密操作,得到加密后的数据。同样地,可以使用加密器对象对加密后的数据进行解密操作,得到原始的敏感数据。 除了基本的加密和解密操作,
Jasypt还提供了一些高级功能,如安全哈希算法、密码强度校验和密码重置等。
安全哈希算法是一种单向加密算法,它可以将任意长度的数据转换为固定长度的哈希值。密码强度校验用于评估密码的安全性,可以检测密码是否符合一定的复杂度要求。密码重置功能可以生成一个随机的密码,并将其加密存储在数据库中,以提高密码的安全性。 在实际应用中,Jasypt可以被广泛用于保护敏感数据的安全性。例如,在Web应用中,可以使用Jasypt对数据库连接字符串进行加密,以防止恶意用户获取敏感信息。同时,Jasypt还可以应用于用户密码的存储和验证,以及敏感数据的传输和存储等场景。 Jasypt是一个功能强大的Java加密库,它通过使用强大的加密算法和安全的编码技术,保护了敏感数据的安全性。在数据安全领域中,Jasypt可以被广泛应用于各种场景,以提高敏感数据的保护水平。通过了解Jasypt的原理和应用,我们可以更好地理解和使用这个开源库,为数据安全做出贡献。

举例:spring boot使用jasypt加密原理解析

用法一

先看用法有多简单,以springboot为例:

Application.java上增加注解@EnableEncryptableProperties;

增加配置文件jasypt.encryptor.password = guaijushi@cblog,这是加密的秘钥;(可自定义)

所有明文密码替换为ENC(加密字符串),例如ENC(XW2daxuaTftQ+F2iYPQu0g==);

引入一个MAVEN依赖;

maven坐标如下:

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

简答的4步就搞定啦,是不是超简单?完全不需要修改任何业务代码。 其中第三步的加密字符串的生成方式为:

java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="123456" password=guaijushi@cblog algorithm=PBEWithMD5AndDES

其中:input的值就是原密码。

password的值就是参数

jasypt.encryptor.password指定的值,即秘钥。

用法二

增加配置文件jasypt.encryptor.password = xxx@cblog,这是加密的秘钥;(可自定义)

所有明文密码替换为ENC(加密字符串),例如ENC(XW2daxuaTftQ+F2iYPQu0g==);

引入一个MAVEN依赖;

maven坐标如下:

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

相比第一种用法,maven坐标有所变化。但是不需要显示增加注解@EnableEncryptableProperties;

这篇关于jasypt数据库加密密码代码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/188176

相关文章

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

MySQL数据库宕机,启动不起来,教你一招搞定!

作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG、Mongodb数据库运维(如安装迁移,性能优化、故障应急处理等)公众号:老苏畅谈运维欢迎关注本人公众号,更多精彩与您分享。 MySQL数据库宕机,数据页损坏问题,启动不起来,该如何排查和解决,本文将为你说明具体的排查过程。 查看MySQL error日志 查看 MySQL error日志,排查哪个表(表空间

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

代码随想录冲冲冲 Day39 动态规划Part7

198. 打家劫舍 dp数组的意义是在第i位的时候偷的最大钱数是多少 如果nums的size为0 总价值当然就是0 如果nums的size为1 总价值是nums[0] 遍历顺序就是从小到大遍历 之后是递推公式 对于dp[i]的最大价值来说有两种可能 1.偷第i个 那么最大价值就是dp[i-2]+nums[i] 2.不偷第i个 那么价值就是dp[i-1] 之后取这两个的最大值就是d

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip

D4代码AC集

贪心问题解决的步骤: (局部贪心能导致全局贪心)    1.确定贪心策略    2.验证贪心策略是否正确 排队接水 #include<bits/stdc++.h>using namespace std;int main(){int w,n,a[32000];cin>>w>>n;for(int i=1;i<=n;i++){cin>>a[i];}sort(a+1,a+n+1);int i=1

深入理解数据库的 4NF:多值依赖与消除数据异常

在数据库设计中, "范式" 是一个常常被提到的重要概念。许多初学者在学习数据库设计时,经常听到第一范式(1NF)、第二范式(2NF)、第三范式(3NF)以及 BCNF(Boyce-Codd范式)。这些范式都旨在通过消除数据冗余和异常来优化数据库结构。然而,当我们谈到 4NF(第四范式)时,事情变得更加复杂。本文将带你深入了解 多值依赖 和 4NF,帮助你在数据库设计中消除更高级别的异常。 什么是