iOS   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了公共代码之密码加解密大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

在项目中,我们还会让密码使用定义的加密技术,下面就是我们常用的SHA密码加密算法,实例代码如下:

// Decompiled by DJ v3.7.7.81 Copyright 2004 atanas Neshkov  Date: 2007-7-21 11:55:00 AM  // Home Page : http://members.fortunecity.com/neshkov/dj.html  - Check often for new version!  // Decompiler options: packimports(3)   // Source File Name:   SHA1.java    package com.repair.common.util;    public class SHA1  {        public SHA1()      {      }        public static String b64_hmac_sha1(String key,String data)      {          return binb2b64(core_hmac_sha1(key,data));      }        public static String b64_sha1(String s)      {          s = s != null ? s : "";          return binb2b64(core_sha1(str2binb(s),s.length() * 8));      }        private static String binb2b64(int binarray[])      {          String tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";          String str = "";          binarray = strechBinArray(binarray,binarray.length * 4);          for(int i = 0; i < binarray.length * 4; i += 3)          {              int triplet = (binarray[i >> 2] >> 8 * (3 - i % 4) & 0xff) << 16 | (binarray[i + 1 >> 2] >> 8 * (3 - (i + 1) % 4) & 0xff) << 8 | binarray[i + 2 >> 2] >> 8 * (3 - (i + 2) % 4) & 0xff;              for(int j = 0; j < 4; j++)                  if(i * 8 + j * 6 > binarray.length * 32)                      str = str + "=";                  else                      str = str + tab.charAt(triplet >> 6 * (3 - j) & 0x3f);            }            return cleanB64Str(str);      }        private static String binb2hex(int binarray[])      {          String hex_tab = "0123456789abcdef";          String str = "";          for(int i = 0; i < binarray.length * 4; i++)          {              char a = hex_tab.charAt(binarray[i >> 2] >> (3 - i % 4) * 8 + 4 & 0xf);              char b = hex_tab.charAt(binarray[i >> 2] >> (3 - i % 4) * 8 & 0xf);              str = str + (new Character(a)).toString() + (new Character(b)).toString();          }            return str;      }        private static String binb2str(int bin[])      {          String str = "";          int mask = 255;          for(int i = 0; i < bin.length * 32; i += 8)              str = str + (char)(bin[i >> 5] >>> 24 - i % 32 & mask);            return str;      }        @SuppressWarnings("unused")  	private static int bit_rol(int num,int cnt)      {          return num << cnt | num >>> 32 - cnt;      }        private static String cleanB64Str(String str)      {          str = str != null ? str : "";          int len = str.length();          if(len <= 1)              return str;          char trailChar = str.charAt(len - 1);          String trailStr = "";          for(int i = len - 1; i >= 0 && str.charAt(i) == trailChar; i--)              trailStr = trailStr + str.charAt(i);            return str.substring(0,str.indexOf(trailStr));      }        private static int[] complete216(int oldbin[])      {          if(oldbin.length >= 16)              return oldbin;          int newbin[] = new int[16 - oldbin.length];          for(int i = 0; i < newbin.length; i++)              newbin[i] = 0;            return concat(oldbin,newbin);      }        private static int[] concat(int oldbin[],int newbin[])      {          int retval[] = new int[oldbin.length + newbin.length];          for(int i = 0; i < oldbin.length + newbin.length; i++)              if(i < oldbin.length)                  retval[i] = oldbin[i];              else                  retval[i] = newbin[i - oldbin.length];            return retval;      }        private static int[] core_hmac_sha1(String key,String data)      {          key = key != null ? key : "";          data = data != null ? data : "";          int bkey[] = complete216(str2binb(key));          if(bkey.length > 16)              bkey = core_sha1(bkey,key.length() * 8);          int ipad[] = new int[16];          int opad[] = new int[16];          for(int i = 0; i < 16; i++)          {              ipad[i] = 0;              opad[i] = 0;          }            for(int i = 0; i < 16; i++)          {              ipad[i] = bkey[i] ^ 0x36363636;              opad[i] = bkey[i] ^ 0x5c5c5c5c;          }            int hash[] = core_sha1(concat(ipad,str2binb(data)),512 + data.length() * 8);          return core_sha1(concat(opad,hash),672);      }        private static int[] core_sha1(int x[],int len)      {          int size = len >> 5;          x = strechBinArray(x,size);          x[len >> 5] |= 128 << 24 - len % 32;          size = ((len + 64 >> 9) << 4) + 15;          x = strechBinArray(x,size);          x[((len + 64 >> 9) << 4) + 15] = len;          int w[] = new int[80];          int a = 0x67452301;          int b = 0xefcdab89;          int c = 0x98badcfe;          int d = 0x10325476;          int e = 0xc3d2e1f0;          for(int i = 0; i < x.length; i += 16)          {              int olda = a;              int oldb = b;              int oldc = c;              int oldd = d;              int olde = e;              for(int j = 0; j < 80; j++)              {                  if(j < 16)                      w[j] = x[i + j];                  else                      w[j] = rol(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16],1);                  int t = safe_add(safe_add(rol(a,5),sha1_ft(j,b,c,d)),safe_add(safe_add(e,w[j]),sha1_kt(j)));                  e = d;                  d = c;                  c = rol(b,30);                  b = a;                  a = t;              }                a = safe_add(a,olda);              b = safe_add(b,oldb);              c = safe_add(c,oldc);              d = safe_add(d,oldd);              e = safe_add(e,olde);          }            int retval[] = new int[5];          retval[0] = a;          retval[1] = b;          retval[2] = c;          retval[3] = d;          retval[4] = e;          return retval;      }        @SuppressWarnings("unused")      private static void dotest()      {  		String key = "key";          String data = "king";          //System.out.println("hex_sha1(" + data + ")=" + hex_sha1(data));          //System.out.println("b64_sha1(" + data + ")=" + b64_sha1(data));          //System.out.println("str_sha1(" + data + ")=" + str_sha1(data));          //System.out.println("hex_hmac_sha1(" + key + "," + data + ")=" + hex_hmac_sha1(key,data));          //System.out.println("b64_hmac_sha1(" + key + "," + data + ")=" + b64_hmac_sha1(key,data));          //System.out.println("str_hmac_sha1(" + key + "," + data + ")=" + str_hmac_sha1(key,data));      }        public static String hex_hmac_sha1(String key,String data)      {          return binb2hex(core_hmac_sha1(key,data));      }        public static String hex_sha1(String s)      {          s = s != null ? s : "";          return binb2hex(core_sha1(str2binb(s),s.length() * 8));      }        private static int rol(int num,int cnt)      {          return num << cnt | num >>> 32 - cnt;      }        private static int safe_add(int x,int y)      {          int lsw = (x & 0xffff) + (y & 0xffff);          int msw = (x >> 16) + (y >> 16) + (lsw >> 16);          return msw << 16 | lsw & 0xffff;      }        private static int sha1_ft(int t,int b,int c,int d)      {          if(t < 20)              return b & c | ~b & d;          if(t < 40)              return b ^ c ^ d;          if(t < 60)              return b & c | b & d | c & d;          else              return b ^ c ^ d;      }        private static int sha1_kt(int t)      {          return t >= 20 ? t >= 40 ? t >= 60 ? 0xca62c1d6 : 0x8f1bbcdc : 0x6ed9eba1 : 0x5a827999;      }        @SuppressWarnings("unused")  	private static boolean sha1_vm_test()      {          return hex_sha1("abc").equals("a9993e364706816aba3e25717850c26c9cd0d89d");      }        public static String str_hmac_sha1(String key,String data)      {          return binb2str(core_hmac_sha1(key,data));      }        public static String str_sha1(String s)      {          s = s != null ? s : "";          return binb2str(core_sha1(str2binb(s),s.length() * 8));      }        private static int[] str2binb(String str)      {          str = str != null ? str : "";          int tmp[] = new int[str.length() * 8];          int mask = 255;          for(int i = 0; i < str.length() * 8; i += 8)              tmp[i >> 5] |= (str.charAt(i / 8) & mask) << 24 - i % 32;            int len = 0;          for(int i = 0; i < tmp.length && tmp[i] != 0;)          {              i++;              len++;          }            int bin[] = new int[len];          for(int i = 0; i < len; i++)              bin[i] = tmp[i];            return bin;      }        private static int[] strechBinArray(int oldbin[],int size)      {          int currlen = oldbin.length;          if(currlen >= size + 1)              return oldbin;          int newbin[] = new int[size + 1];          for(int i = 0; i < size; i++)              newbin[i] = 0;            for(int i = 0; i < currlen; i++)              newbin[i] = oldbin[i];            return newbin;      }        public static String encryptWithSHA1(String str)      {          return b64_sha1(str).substring(0,24);          //return b64_sha1(str);      }      
    //测试      public static void main(String args1[])      {      	System.out.println(encryptWithSHA1("coltrip"));      }        @SuppressWarnings("unused")  	private static final boolean hexcase = false;      @SuppressWarnings({ "unused","unused" })  	private static final String b64pad = "=";      @SuppressWarnings("unused")  	private static final int chrsz = 8;  }

大佬总结

以上是大佬教程为你收集整理的公共代码之密码加解密全部内容,希望文章能够帮你解决公共代码之密码加解密所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: