java如何给链接数据库加密

639
2021/2/20 11:36:27
栏目: 编程语言
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

java如何给链接数据库加密

在java中使用DES算法对数据库进行加密,具体方法如下:

import java.security.Key;

import java.security.SecureRandom;

import javax.crypto.Cipher;

import javax.crypto.KeyGenerator;

import sun.misc.BASE64Decoder;

import sun.misc.BASE64Encoder;

public class DESUtils {

private static Key key;

// 设置密钥key

private static String KEY_STR = "myKey";

private static String CHARSETNAME = "UTF-8";

private static String ALGORITHM = "DES";

// 静态代码块

static {

try {

// 生成DES算法对象

KeyGenerator generator = KeyGenerator.getInstance(ALGORITHM);

// 运用SHA1安全策略

SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");

// 设置上密钥种子

secureRandom.setSeed(KEY_STR.getBytes());

// 初始化基于SHA1的算法对象

generator.init(secureRandom);

// 生成密钥对象

key = generator.generateKey();

generator = null;

} catch (Exception e) {

throw new RuntimeException(e);

}

}

/**

* 获取加密后的信息

*

* @param str

* @return

*/

public static String getEncryptString(String str) {

// 基于BASE64编码,接收byte[]并转换为String

BASE64Encoder base64encoder = new BASE64Encoder();

try {

// 按UTF-8编码

byte[] bytes = str.getBytes(CHARSETNAME);

// 获取加密对象

Cipher cipher = Cipher.getInstance(ALGORITHM);

// 初始化密码信息

cipher.init(Cipher.ENCRYPT_MODE, key);

// 加密

byte[] doFinal = cipher.doFinal(bytes);

// byte[] to encode好的String并返回

return base64encoder.encode(doFinal);

} catch (Exception e) {

// TODO: handle exception

throw new RuntimeException(e);

}

}

/**

* 获取解密后的信息

*

* @param str

* @return

*/

public static String getDecryptString(String str) {

//基于BASE64编码,接收byte[]并转换为String

BASE64Decoder base64decoder = new BASE64Decoder();

try {

//将字符串decode为byte[]

byte[] bytes = base64decoder.decodeBuffer(str);

//获取解密对象

Cipher cipher = Cipher.getInstance(ALGORITHM);

//初始化解密信息

cipher.init(Cipher.DECRYPT_MODE, key);

//解密

byte[] doFinal = cipher.doFinal(bytes);

//返回解密之后的信息

return new String(doFinal, CHARSETNAME);

} catch (Exception e) {

// TODO: handle exception

throw new RuntimeException(e);

}

}

public static void main(String[] args) {

System.out.println(getEncryptString("root"));

System.out.println(getEncryptString("123654"));

}

}

辰迅云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读: Scrapy与数据库集成的方法是什么