最适合加密敏感数据的算法。每次传输的数据都不一样,即使黑客都头疼额。使用了md5加密。

来源:互联网 发布:笛佛软件面试 编辑:程序博客网 时间:2024/06/05 10:00

很多时候不方便用明文传输敏感数据时大家都想到了加密。但是加密的数据在网络上被人拦截了,人家直接就用你加密后的数据就是了,那管你原来的值是多少啊。我的这个方法可以让每次发送的值都不一样,而且md5的结果是定长的这也方便了我们去分析。当然里面有个地方需要保密,如果那个地方暴露了人家破解你也是so简单啊。废话不多说上代码。之前考虑有误,因为别人只需要获取一次就原样发送就ok了,所以这个key值可以由服务器随机提供。这样除非别人知道你的客户端是如何封装的才能破解了。这样安全系数大大的提高。

import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;/** * 采用MD5加密解密 *  */public class test {/*** * MD5加码 生成32位md5码 */public static String string2MD5(String inStr) {StringBuffer hexValue = new StringBuffer();try {MessageDigest md5 = MessageDigest.getInstance("MD5");byte[] md5Bytes = md5.digest(inStr.getBytes());for (int i = 0; i < md5Bytes.length; ++i)hexValue.append(String.format("%02x",((int) md5Bytes[i]) & 0xff));} catch (NoSuchAlgorithmException e) {return null;}return hexValue.toString();}// 测试主函数public static void main(String args[]) {String s = new String("abcdefg"); // 假设是密码System.out.println("原始:" + s); // 原字符串String key = String.format("%02x", (int) (Math.random() * 0xff)); // 随机生成一个keySystem.out.println("key : " + key);String e = string2MD5(s + key); // 将这个key值结合密码一起生成一个md5值int where_key = 5; // key插入的位置System.out.println(e);String send = e.substring(0, where_key) + key + e.substring(where_key); // 在将这个key结合md5的结果一起用于网络发送System.out.println(send);}<h4>}当客户端封装好以上字符串发送给服务器时,服务器可以根据key的值也来生成一个md5的字符串,用来和接收的数据比较。这样就能保证安全了。当然看了上面的代码,你肯定发现了,就是where_key这个值不能让人知道的。因为你客户端准备好这么一串密码值时发送给服务器,服务器要靠where_key来解析的额,一旦别人知道了就不好办了。当然破解一个md5的字符串复杂不复杂我是不知道了。但是以上代码能保证每次网络上传输的数据一定是不同的。</h4>
0 0
原创粉丝点击