龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > JAVA开发 >

java的md5加密类(zt)

时间:2009-12-23 15:42来源:未知 作者:admin 点击:
分享到:
Java的md5加密类 MD5算法是将数据进行不可逆加密的算法有较好的安全性,在国内如寿信的安全支付平台就采用此算法。 源代码如下 /************************************************ MD5 算法的Java

  Java的md5加密类
  
   MD5算法是将数据进行不可逆加密的算法有较好的安全性,在国内如寿信的安全支付平台就采用此算法。
  
   源代码如下
   /************************************************
   MD5 算法的Java Bean
   Last Modified:10,Mar,2001
   *************************************************/
  
   import java.lang.reflect.*;
  
   /*************************************************
   md5 类实现了RSA Data Security, Inc.在提交给IETF
   的RFC1321中的MD5 message-digest 算法。
   *************************************************/
  
   public class MD5 {
   /* 下面这些S11-S44实际上是一个4*4的矩阵,在原始的C实现中是用#define 实现的,
   这里把它们实现成为static final是表示了只读,切能在同一个进程空间内的多个
   Instance间共享*/
   static final int S11 = 7;
   static final int S12 = 12;
   static final int S13 = 17;
   static final int S14 = 22;
  
   static final int S21 = 5;
   static final int S22 = 9;
   static final int S23 = 14;
   static final int S24 = 20;
  
   static final int S31 = 4;
   static final int S32 = 11;
   static final int S33 = 16;
   static final int S34 = 23;
  
   static final int S41 = 6;
   static final int S42 = 10;
   static final int S43 = 15;
   static final int S44 = 21;
  
   static final byte[] PADDING = { -128, 0, 0, 0, 0, 0, 0, 0, 0,
   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
   /* 下面的三个成员是MD5计算过程中用到的3个核心数据,在原始的C实现中
      被定义到MD5_CTX结构中
  
   */
   private long[] state = new long[4];  // state (ABCD)
   private long[] count = new long[2];  // number of bits, modulo 2^64 (lsb first)
   private byte[] buffer = new byte[64]; // input buffer
  
   /* digestHexStr是MD5的唯一一个公共成员,是最新一次计算结果的
     16进制ASCII表示.
   */
   public String digestHexStr;
  
   /* digest,是最新一次计算结果的2进制内部表示,表示128bit的MD5值.
   */
   private byte[] digest = new byte[16];
  
   /*
     getMD5ofStr是类MD5最主要的公共方法,入口参数是你想要进行MD5变换的字符串
     返回的是变换完的结果,这个结果是从公共成员digestHexStr取得的.
   */
   public String getMD5ofStr(String inbuf) {
   md5Init();
   md5Update(inbuf.getBytes(), inbuf.length());
   md5Final();
   digestHexStr = "";
   for (int i = 0; i < 16; i++) {
   digestHexStr += byteHEX(digest[i]);
   }
   return digestHexStr;
  
   }
   // 这是MD5这个类的标准构造函数,JavaBean要求有一个public的并且没有参数的构造函数
   public MD5() {
   md5Init();
  
   return;
   }
  
  
  
   /* md5Init是一个初始化函数,初始化核心变量,装入标准的幻数 */
   private void md5Init() {
   count[0] = 0L;
   count[1] = 0L;
  
  
精彩图集

赞助商链接