I/O及网络--MD5加密及Java的实现方式

 

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

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

最后
附上实现的代码

  1.  
  2. import java.security.*;
  3.  
  4. public class MD5 {
  5.   /**
  6.    * MD5
  7.    *
  8.    * @author Dreamer
  9.    */
  10.   public MD5() {
  11.   }
  12.  
  13.   public static byte[] md5(byte[] in) {
  14.     MessageDigest md = null;
  15.     byte[] out = new byte[16];
  16.     try {
  17.       md = MessageDigest.getInstance("MD5");
  18.     }
  19.     catch (NoSuchAlgorithmException ex) {
  20.       System.out.println(ex.toString());
  21.     }
  22.     md.reset();
  23.     md.update(in);
  24.     out = md.digest();
  25.     return out;
  26.   }
  27.  
  28.   public static byte[] md5(byte[] in, int len) {
  29.     MessageDigest md = null;
  30.     byte[] out = new byte[16];
  31.     try {
  32.       md = MessageDigest.getInstance("MD5");
  33.     }
  34.     catch (NoSuchAlgorithmException ex) {
  35.       System.out.println(ex.toString());
  36.     }
  37.     md.reset();
  38.     md.update(in, 0, len);
  39.     out = md.digest();
  40.     return out;
  41.   }
  42.  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值