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

相关文章

C#实现千万数据秒级导入的代码

《C#实现千万数据秒级导入的代码》在实际开发中excel导入很常见,现代社会中很容易遇到大数据处理业务,所以本文我就给大家分享一下千万数据秒级导入怎么实现,文中有详细的代码示例供大家参考,需要的朋友可... 目录前言一、数据存储二、处理逻辑优化前代码处理逻辑优化后的代码总结前言在实际开发中excel导入很

SpringBoot+RustFS 实现文件切片极速上传的实例代码

《SpringBoot+RustFS实现文件切片极速上传的实例代码》本文介绍利用SpringBoot和RustFS构建高性能文件切片上传系统,实现大文件秒传、断点续传和分片上传等功能,具有一定的参考... 目录一、为什么选择 RustFS + SpringBoot?二、环境准备与部署2.1 安装 RustF

Python实现Excel批量样式修改器(附完整代码)

《Python实现Excel批量样式修改器(附完整代码)》这篇文章主要为大家详细介绍了如何使用Python实现一个Excel批量样式修改器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录前言功能特性核心功能界面特性系统要求安装说明使用指南基本操作流程高级功能技术实现核心技术栈关键函

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

MySQL8 密码强度评估与配置详解

《MySQL8密码强度评估与配置详解》MySQL8默认启用密码强度插件,实施MEDIUM策略(长度8、含数字/字母/特殊字符),支持动态调整与配置文件设置,推荐使用STRONG策略并定期更新密码以提... 目录一、mysql 8 密码强度评估机制1.核心插件:validate_password2.密码策略级

如何通过try-catch判断数据库唯一键字段是否重复

《如何通过try-catch判断数据库唯一键字段是否重复》在MyBatis+MySQL中,通过try-catch捕获唯一约束异常可避免重复数据查询,优点是减少数据库交互、提升并发安全,缺点是异常处理开... 目录1、原理2、怎么理解“异常走的是数据库错误路径,开销比普通逻辑分支稍高”?1. 普通逻辑分支 v

Python与MySQL实现数据库实时同步的详细步骤

《Python与MySQL实现数据库实时同步的详细步骤》在日常开发中,数据同步是一项常见的需求,本篇文章将使用Python和MySQL来实现数据库实时同步,我们将围绕数据变更捕获、数据处理和数据写入这... 目录前言摘要概述:数据同步方案1. 基本思路2. mysql Binlog 简介实现步骤与代码示例1

Redis实现高效内存管理的示例代码

《Redis实现高效内存管理的示例代码》Redis内存管理是其核心功能之一,为了高效地利用内存,Redis采用了多种技术和策略,如优化的数据结构、内存分配策略、内存回收、数据压缩等,下面就来详细的介绍... 目录1. 内存分配策略jemalloc 的使用2. 数据压缩和编码ziplist示例代码3. 优化的

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W