首先
   我看到很多贴子,上面描述MD5加密解密等话题,因此写此文章为了把MD5加密问题简单的说个透彻,并且给大家已经实践过的代码。
其次   MD5加密并不是把原文加密,这个大家得注意,既然没有把原文加密何来的解密呢?简直是个笑话。MD5的用途就是把一段原文数据通过一定的算法生成16字节的密文,通过这个密文我们可以检查原文的数据是否被修改过。常用在网络中明文数据传输,防止传输过程中内容被恶意修改。典型的应用协议为radius,radius协议中有16byte就是MD5所留的,把用户的密码加在报文尾部进行MD5,把结果存在网络中,所以明文部分看不到用户的密码,当服务器收到此包,用同样的方法进行MD5,如果加密出来的16byte一样,说明是有效的未被恶意修改的网络包。
最后附上实现的代码
- import java.security.*; 
- public class MD5 { 
-   /**
-    * MD5
-    *
-    * @author Dreamer
-    */
-   public MD5() { 
-   } 
-   public static byte[] md5(byte[] in) { 
-     MessageDigest md = null; 
-     byte[] out = new byte[16]; 
-     try { 
-       md = MessageDigest.getInstance("MD5"); 
-     } 
-     catch (NoSuchAlgorithmException ex) { 
-       System.out.println(ex.toString()); 
-     } 
-     md.reset(); 
-     md.update(in); 
-     out = md.digest(); 
-     return out; 
-   } 
-   public static byte[] md5(byte[] in, int len) { 
-     MessageDigest md = null; 
-     byte[] out = new byte[16]; 
-     try { 
-       md = MessageDigest.getInstance("MD5"); 
-     } 
-     catch (NoSuchAlgorithmException ex) { 
-       System.out.println(ex.toString()); 
-     } 
-     md.reset(); 
-     md.update(in, 0, len); 
-     out = md.digest(); 
-     return out; 
-   } 
- } 
posted on 2006-08-10 09:51 
matthew 阅读(302) 
评论(0)  编辑  收藏  所属分类: 
基础编程篇