最适合加密敏感数据的算法。每次传输的数据都不一样,即使黑客都头疼额。使用了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
- 最适合加密敏感数据的算法。每次传输的数据都不一样,即使黑客都头疼额。使用了md5加密。
- 有趣的加密算法------每次加密后的数据都不一样
- 为什么RSA公钥每次加密得到的结果都不一样?
- 算法--MD5--如何保证MD5加密结果在不同的环境下都相同
- Bootstarp分页,每次项目都头疼的.再也不要重写了.复制下来重用
- 最简单的使用MD5加密算法对数据进行加密
- java 和.net的MD5加密不一样?!
- MD5加密的使用
- 使用md5的算法进行加密
- 让电脑每次的开机音乐都不一样
- 最简单的MD5加密
- [组件代码共享]可逆加密,支持中文,支持密钥,支持ASP,加密后的密文每次都不同,且可随意改变算法
- AES加密算法在linux下相同输入每次加密结果都不同的问题
- md5加密和sha加密的使用
- 使用MD5算法加密VFP数据
- 表单数据的加密传输
- 表单数据的加密传输
- 表单数据的加密传输
- 第五篇--自定义View
- JAVA基础常识
- ubuntu14.04LTS安装JAVA8和eclipse4.4
- 线程锁的概念函数EnterCriticalSection和LeaveCriticalSection的用法
- Redis源码学习1——基本数据结构sds
- 最适合加密敏感数据的算法。每次传输的数据都不一样,即使黑客都头疼额。使用了md5加密。
- 背包问题详解(转)
- 2、Spring4之Bean的两种配置方式
- SRPING+SPRINGMVC+JAP+HIBERNATE
- C++中的#,##,和"
- 文件系统错误故障排除
- UVALive - 2678 Subsequence
- 算法练习--多项式加法
- Redis源码学习2-内存管理