DES和RSA加密数据传输信息Java实现
2015-10-26 19:05
666 查看
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是一个很好的方案,并且只用在关键的数据上加密,其他的数据可以不进行处理,同时使用单点登录也是一个很好的选择,后面也会对上面的实现方式进行改进。
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- OpenSSL编程之RSA
- PropertyChangeListener简单理解
- 每 172 个活动 RSA 证书中就有一个容易受到攻击
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序