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.ulisesbocchiogroupId>
    <artifactId>jasypt-spring-bootartifactId>
    <version>2.0.0version>
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.ulisesbocchiogroupId>
    <artifactId>jasypt-spring-boot-starterartifactId>
    <version>2.0.0version>
dependency>

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

你可能感兴趣的:(基础Java-加解密相关,java,spring,spring,boot)