⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sha1.java

📁  SHA (Secure Hash Algorithm
💻 JAVA
字号:

 public   class   sha1   {   
          private   int   a   =   0x67452301;   
          private   int   b   =   0xefcdab89;   
          private   int   c   =   0x98badcfe;   
          private   int   d   =   0x10325476;   
          private   int   e   =   0xc3d2e1f0;   
          private   int   tmpData[]   =   new   int[80];   
          private   int   tmpInt   =   0;   
    
          public   sha1()   {   
          }   
    
          private   void   init()   {   
                  a   =   0x67452301;   
                  b   =   0xefcdab89;   
                  c   =   0x98badcfe;   
                  d   =   0x10325476;   
                  e   =   0xc3d2e1f0;   
                  tmpInt   =   0;   
    
                  for(int   i   =   0;   i   <   tmpData.length;   i++)   {   
                          tmpData[i]   =   0;   
                  }   
          }   
    
          public   void   byteToInt(byte   byteData[],   int   i)   {   
                  tmpData[tmpInt++]   =   ((byteData[i]   &   0xff)<<24)   |   ((byteData[i   +   1]   &   0xff)<<16)   |   ((byteData[i   +   2]   &   0xff)<<8)   |   (byteData[i   +   3]   &   0xff);   
    
                  if(tmpInt   ==   16)   {   
                          encrypt();   
                  }   
          }   
    
          private   void   intToByte(int   intValue,   byte   byteData[],   int   i)   {   
                  byteData[i]   =   (byte)(intValue>>>24);   
                  byteData[i   +   1]   =   (byte)(intValue>>>16);   
                  byteData[i   +   2]   =   (byte)(intValue>>>8);   
                  byteData[i   +   3]   =   (byte)intValue;   
          }   
    
          public   void   setLength(long   l)   {   
                  if(tmpInt   >   14)   {   
                          encrypt();   
                  }   
    
                  tmpData[14]   =   (int)(l>>>32);   
                  tmpData[15]   =   (int)(l   &   -1L);   
          }   
    
          public   int   getResult(byte   byteData[])   {   
                  intToByte(a,   byteData,   0);   
                  intToByte(b,   byteData,   4);   
                  intToByte(c,   byteData,   8);   
                  intToByte(d,   byteData,   12);   
                  intToByte(e,   byteData,   16);   
                  init();   
    
                  return   20;   
          }   
    
          private   int   f1(int   x,   int   y,   int   z)   {   
                  return   (x   &   y)   |   (~x   &   z);   
          }   
    
          private   int   f2(int   x,   int   y,   int   z)   {   
                  return   x   ^   y   ^   z;   
          }   
    
          private   int   f3(int   x,   int   y,   int   z)   {   
                  return   (x   &   y)   |   (x   &   z)   |   (y   &   z);   
          }   
    
          private   int   f4(int   x,   int   y)   {   
                  return   (x<<y)   |   x>>>(32   -   y);   
          }   
    
          public   void   encrypt()   {   
                  for(int   i   =   16;   i   <=   79;   i++)   {   
                          tmpData[i]   =   f4(tmpData[i   -   3]   ^   tmpData[i   -   8]   ^   tmpData[i   -   14]   ^   tmpData[i   -   16],   1);   
                  }   
    
                  int   tmpa   =   a;   
                  int   tmpb   =   b;   
                  int   tmpc   =   c;   
                  int   tmpd   =   d;   
                  int   tmpe   =   e;   
    
                  for(int   j   =   0;   j   <=   19;   j++)   {   
                          int   tmp   =   f4(tmpa,   5)   +   f1(tmpb,   tmpc,   tmpd)   +   tmpe   +   tmpData[j]   +   0x5a827999;   
                          tmpe   =   tmpd;   
                          tmpd   =   tmpc;   
                          tmpc   =   f4(tmpb,   30);   
                          tmpb   =   tmpa;   
                          tmpa   =   tmp;   
                  }   
    
                  for(int   k   =   20;   k   <=   39;   k++)   {   
                          int   tmp   =   f4(tmpa,   5)   +   f2(tmpb,   tmpc,   tmpd)   +   tmpe   +   tmpData[k]   +   0x6ed9eba1;   
                          tmpe   =   tmpd;   
                          tmpd   =   tmpc;   
                          tmpc   =   f4(tmpb,   30);   
                          tmpb   =   tmpa;   
                          tmpa   =   tmp;   
                  }   
    
                  for(int   l   =   40;   l   <=   59;   l++)   {   
                          int   tmp   =   f4(tmpa,   5)   +   f3(tmpb,   tmpc,   tmpd)   +   tmpe   +   tmpData[l]   +   0x8f1bbcdc;   
                          tmpe   =   tmpd;   
                          tmpd   =   tmpc;   
                          tmpc   =   f4(tmpb,   30);   
                          tmpb   =   tmpa;   
                          tmpa   =   tmp;   
                  }   
    
                  for(int   m   =   60;   m   <=   79;   m++)   {   
                          int   tmp   =   f4(tmpa,   5)   +   f2(tmpb,   tmpc,   tmpd)   +   tmpe   +   tmpData[m]   +   0xca62c1d6;   
                          tmpe   =   tmpd;   
                          tmpd   =   tmpc;   
                          tmpc   =   f4(tmpb,   30);   
                          tmpb   =   tmpa;   
                          tmpa   =   tmp;   
                  }   
    
                  a   +=   tmpa;   
                  b   +=   tmpb;   
                  c   +=   tmpc;   
                  d   +=   tmpd;   
                  e   +=   tmpe;   
                  tmpInt   =   0;   
    
                  for(int   n   =   0;   n   <   tmpData.length;   n++)   {   
                          tmpData[n]   =   0;   
                  }   
          }   
  }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -