java jdbc连接mysql数据库 如何实现用户名密码以及传输数据的加密?
发布网友
发布时间:2022-04-08 19:41
我来回答
共6个回答
热心网友
时间:2022-04-08 21:10
你的问题很不清晰。
java jdbc连接mysql数据库
如何实现用户名密码以及传输数据的加密
你是要加密保存的数据,还是加密连接信息?
如果是连接串中的用户名与密码进行加密。恐怕用起来很不方便。
我就当你是要把入库的信息加密。
下边是DES加密的方法。将数据进行DES加密,将加密内容转为16进制内容表示。
--------------------------------------------------------------------------------------------
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
public class DesTest {
public static void main(String[] args) throws Exception {
// 要加密的数据
String str = "123456";
// 密钥
String strKey = "86337898";
SecretKeySpec key = new SecretKeySpec(strKey.getBytes(), "DES");
Cipher cipher = Cipher.getInstance("DES");
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] byteFina = cipher.doFinal(str.getBytes());
String strFinal = byte2Hex(byteFina);
System.out.println(strFinal);
cipher.init(Cipher.DECRYPT_MODE, key);
byte[] decByte = hex2Byte(strFinal);
byte[] result = cipher.doFinal(decByte);
System.out.println(new String(result));
}
public static String byte2Hex(byte[] buff) {
String hs = "";
for (int i = 0; i < buff.length; i++) {
String stmp = (Integer.toHexString(buff[i] & 0XFF));
if (stmp.length() == 1)
hs = hs + "0" + stmp;
else
hs = hs + stmp;
}
return hs;
}
public static byte[] hex2Byte(String str) {
int len = str.length() / 2;
byte[] buff = new byte[len];
int index = 0;
for (int i = 0; i < str.length(); i += 2) {
buff[index++] = (byte) Integer
.parseInt(str.substring(i, i + 2), 16);
}
return buff;
}
}
热心网友
时间:2022-04-08 22:28
如果jdbc和mysql都支持 SSL那通过配置就可以了
如果不支持,那也可以自己来实现。
实现思路:
1、在数据库的主机上运行一个java服务,用来转发数据这个服务我们成为A服务
2、客户端并不直接访问数据库,而访问A服务,客户端和A服务之间的传输代码由用户自己完成,当然可以加密。走套接字,走http,或者其他什么都是可以的。
热心网友
时间:2022-04-09 00:03
这个加密算法是比较简单的了 ,直接用就OK了
public class MessageDigestUtil {
public static String digestByMD5(String str) throws Exception{
//采用MD5加密算法,将任意长度字符串加密
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] bts = md.digest(str.getBytes());
//采用Base64算法,将加密后的字节变成字符串
BASE64Encoder encoder = new BASE64Encoder();
return encoder.encode(bts);
}
public static void main(String[] args) throws Exception{
System.out.println(digestByMD5("abc"));
System.out.println(digestByMD5("1231233223"));
System.out.println(digestByMD5("a"));
}
}追问我从来没用过加密 得多请教一下 您这个类如果加密了密码 那么还能实现连接数据库吗
还有一个问题就是 如果对传输数据进行了加密 那么如果是一条insert语句 那么需要进行解密执行入库吧
热心网友
时间:2022-04-09 01:54
你的意思是你的数据在入库之前是不加密的,但在入库的路上是加密的,到了数据库里又是不加密的是把,除非神经有问题,否则没有这么干的追问。。。。我也从来没接触过这东西~ 就是别人安排的活~ 目的是为了不让别人在中途获取到重要数据~
热心网友
时间:2022-04-09 04:02
在保存数据的时候采用md5加密,不就行了,传输过程中他就是密文了,数据库中也是密文,
热心网友
时间:2022-04-09 06:27
数据传输过程加密?你要怎么加密?现在要么是在传输之前加密,要么是在入库的时候加密!追问传输之前加密 连接密码和传输数据都要加密 传输过去后解密插入 有这种办法吗?
追答哎,有必要吗,你加了密还去解密,先不说有没有这种技术,两种不同的语言你想怎么加密,然后怎么解密?