DES和RSA加密数据传输信息Java实现

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wwg377655460/article/details/49428331

DES和RSA加密数据传输信息Java实现

DES加密的方式现在已经不安全了,而我们的RAS加密的速度很慢,并且有长度限制,每一个块只能达到117字节,在给移动终端编写接口时传输的信息大都明文传输,而使用Https协议又不是很方便,所有我就写了一个DES和RSA加密对数据进行加密的方案,大致的想法是先随机生成密钥,用DES对数据进行加密,再用RSA对DES加密密钥进行加密,再传输,服务端先分开字符串,用私钥解密密钥,再用密钥对DES加密的内容进行解密,就完成了数据的安全传输。下面写一下实现的方法

String result = "";
String cryptionKey = "";
String key = GetKey.getKey();//产生随机字符串
try {
    result = desUtil.encrypt(json.toString(), key);//用DES加密
    cryptionKey = SecUtil.encrypt(Data.pub, key);//用RSA对密钥进行加密
} catch (Exception e) {
    e.printStackTrace();
}
result = result + "|" + cryptionKey;
String url = "http://localhost:8080/login";

String param = "json=" + result;
String s = HttpRequest.sendPost(url, param);

GetKey.class

public class GetKey {
    public static String getKey(){
        String s = UUID.randomUUID().toString();
        System.out.println(s);
        String [] str = s.split("-");
        s = "";
        for(String st : str){
            s = s + st;
        }
        return s;
    }
}

两个加密算法因为很长,就给出了连接

在服务端我们接受到了数据进行解密

public static JSONObject analyseMes(String json){
json = json.replace(" ", "+");//传输过程中RSA密文“+”变成了空格,再替换回来
String [] mes = json.split("[|]");//分析字符串
String key = SecUtil.decryptMax(Data.pri, mes[1]);//解密密钥
String result = null;
try {
    result = desUtil.decrypt(mes[0], key);//用key对数据进行解密
} catch (Exception e) {
    e.printStackTrace();
}
JSONObject jsonObject = JSON.parseObject(result);
return jsonObject;
    }

两个解密算法也可以访问连接

加密速度都不是很快,在大用户量访问的情况下,服务器处理大量的数据受到了限制,上面的实现方式应该不是很合理,所以使用Https是一个很好的方案,并且只用在关键的数据上加密,其他的数据可以不进行处理,同时使用单点登录也是一个很好的选择,后面也会对上面的实现方式进行改进。

阅读更多 登录后自动展开
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页