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

相关文章

Mysql数据库聚簇索引与非聚簇索引举例详解

《Mysql数据库聚簇索引与非聚簇索引举例详解》在MySQL中聚簇索引和非聚簇索引是两种常见的索引结构,它们的主要区别在于数据的存储方式和索引的组织方式,:本文主要介绍Mysql数据库聚簇索引与非... 目录前言一、核心概念与本质区别二、聚簇索引(Clustered Index)1. 实现原理(以 Inno

MySQL数据库双机热备的配置方法详解

《MySQL数据库双机热备的配置方法详解》在企业级应用中,数据库的高可用性和数据的安全性是至关重要的,MySQL作为最流行的开源关系型数据库管理系统之一,提供了多种方式来实现高可用性,其中双机热备(M... 目录1. 环境准备1.1 安装mysql1.2 配置MySQL1.2.1 主服务器配置1.2.2 从

SpringBoot基于注解实现数据库字段回填的完整方案

《SpringBoot基于注解实现数据库字段回填的完整方案》这篇文章主要为大家详细介绍了SpringBoot如何基于注解实现数据库字段回填的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解... 目录数据库表pom.XMLRelationFieldRelationFieldMapping基础的一些代

Java集合之Iterator迭代器实现代码解析

《Java集合之Iterator迭代器实现代码解析》迭代器Iterator是Java集合框架中的一个核心接口,位于java.util包下,它定义了一种标准的元素访问机制,为各种集合类型提供了一种统一的... 目录一、什么是Iterator二、Iterator的核心方法三、基本使用示例四、Iterator的工

Java 线程池+分布式实现代码

《Java线程池+分布式实现代码》在Java开发中,池通过预先创建并管理一定数量的资源,避免频繁创建和销毁资源带来的性能开销,从而提高系统效率,:本文主要介绍Java线程池+分布式实现代码,需要... 目录1. 线程池1.1 自定义线程池实现1.1.1 线程池核心1.1.2 代码示例1.2 总结流程2. J

JS纯前端实现浏览器语音播报、朗读功能的完整代码

《JS纯前端实现浏览器语音播报、朗读功能的完整代码》在现代互联网的发展中,语音技术正逐渐成为改变用户体验的重要一环,下面:本文主要介绍JS纯前端实现浏览器语音播报、朗读功能的相关资料,文中通过代码... 目录一、朗读单条文本:① 语音自选参数,按钮控制语音:② 效果图:二、朗读多条文本:① 语音有默认值:②

Vue实现路由守卫的示例代码

《Vue实现路由守卫的示例代码》Vue路由守卫是控制页面导航的钩子函数,主要用于鉴权、数据预加载等场景,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一、概念二、类型三、实战一、概念路由守卫(Navigation Guards)本质上就是 在路

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni

JAVA实现Token自动续期机制的示例代码

《JAVA实现Token自动续期机制的示例代码》本文主要介绍了JAVA实现Token自动续期机制的示例代码,通过动态调整会话生命周期平衡安全性与用户体验,解决固定有效期Token带来的风险与不便,感兴... 目录1. 固定有效期Token的内在局限性2. 自动续期机制:兼顾安全与体验的解决方案3. 总结PS

C#中通过Response.Headers设置自定义参数的代码示例

《C#中通过Response.Headers设置自定义参数的代码示例》:本文主要介绍C#中通过Response.Headers设置自定义响应头的方法,涵盖基础添加、安全校验、生产实践及调试技巧,强... 目录一、基础设置方法1. 直接添加自定义头2. 批量设置模式二、高级配置技巧1. 安全校验机制2. 类型