其实我个人对密码学不太懂,但是在进行C/S架构方式中,数据传输的安全性还是很重要的,数据包内容直接暴露出来就不好了。
之前我和小伙伴弄项目时候,他自写了一个监听工具就把我的数据给暴露出来了。那个酸爽。
好了,废话不多说。先上效果图
接下来代码:
首先模拟一个JSON字符串数据:
private void setData(){
JSONObject json=new JSONObject();
try {
json.put("Type","A");
json.put("Info","我就不信你会无聊到破解我!");
info=json.toString();
} catch (JSONException e) {
e.printStackTrace();
}
}
接下来就是对数据进行加密解密操作
String password="我就是要加密",info=null;
public SetPassword() {
setData();
System.out.println("要传输的数据:" + info);
//把密码转为字节数组
byte[] ps=password.getBytes();
//将数据转为字节数组
byte[] is=info.getBytes();
//创建一个加密传递给客户端的字节数组
byte[] out=new byte[is.length];
for(int i=0;i<is.length;i++){
out[i]= (byte) (is[i]+ps[2]);
}
String passwordData=new String(out);
System.out.println("加密后字符串:"+passwordData);
//创建一个解密接收到数据的字节数组
byte[] in=new byte[out.length];
for(int i=0;i<out.length;i++){
in[i]= (byte) (out[i]-ps[2]);
}
String getData=new String(in);
System.out.println("解密后字符串:"+getData);
try {
JSONObject json=new JSONObject(getData);
System.out.println("JSON数据 key-value1\tType:" + json.getString("Type"));
System.out.println("JSON数据 key-value2\tInfo:" + json.getString("Info"));
} catch (JSONException e) {
e.printStackTrace();
}
}
如果说对数据传输要求不是特别严格的话。个人感觉这种方式其实就已经足够了。因为C/S双方定义好设置的密码和添加的格式。数据传输基本的安全就有保障了。换言之,要是真有人想破解你的数据话,那就另当别论了!