本文主要是介绍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数据库加密密码代码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!