随笔 - 251  文章 - 504  trackbacks - 0
<2006年8月>
303112345
6789101112
13141516171819
20212223242526
272829303112
3456789

本博客系个人收集材料及学习记录之用,各类“大侠”勿扰!

留言簿(14)

随笔分类

收藏夹

My Favorite Web Sites

名Bloger

非著名Bloger

搜索

  •  

积分与排名

  • 积分 - 197535
  • 排名 - 289

最新评论

首先
   我看到很多贴子,上面描述MD5加密解密等话题,因此写此文章为了把MD5加密问题简单的说个透彻,并且给大家已经实践过的代码。

其次
   MD5加密并不是把原文加密,这个大家得注意,既然没有把原文加密何来的解密呢?简直是个笑话。MD5的用途就是把一段原文数据通过一定的算法生成16字节的密文,通过这个密文我们可以检查原文的数据是否被修改过。常用在网络中明文数据传输,防止传输过程中内容被恶意修改。典型的应用协议为radius,radius协议中有16byte就是MD5所留的,把用户的密码加在报文尾部进行MD5,把结果存在网络中,所以明文部分看不到用户的密码,当服务器收到此包,用同样的方法进行MD5,如果加密出来的16byte一样,说明是有效的未被恶意修改的网络包。

最后
附上实现的代码

  1. import java.security.*;
  2. public class MD5 {
  3.   /**
  4.    * MD5
  5.    *
  6.    * @author Dreamer
  7.    */
  8.   public MD5() {
  9.   }
  10.   public static byte[] md5(byte[] in) {
  11.     MessageDigest md = null;
  12.     byte[] out = new byte[16];
  13.     try {
  14.       md = MessageDigest.getInstance("MD5");
  15.     }
  16.     catch (NoSuchAlgorithmException ex) {
  17.       System.out.println(ex.toString());
  18.     }
  19.     md.reset();
  20.     md.update(in);
  21.     out = md.digest();
  22.     return out;
  23.   }
  24.   public static byte[] md5(byte[] in, int len) {
  25.     MessageDigest md = null;
  26.     byte[] out = new byte[16];
  27.     try {
  28.       md = MessageDigest.getInstance("MD5");
  29.     }
  30.     catch (NoSuchAlgorithmException ex) {
  31.       System.out.println(ex.toString());
  32.     }
  33.     md.reset();
  34.     md.update(in, 0, len);
  35.     out = md.digest();
  36.     return out;
  37.   }
  38. }
posted on 2006-08-10 09:51 matthew 阅读(268) 评论(0)  编辑  收藏 所属分类: 基础编程篇

只有注册用户登录后才能发表评论。


网站导航: