资讯详情

RC4 加密算法 Demo

/**  * TODO:  * @author liyong  * @date 2016年1月18日 上午10:51:35  */ public class RC4Util {      public static String decry_RC4(byte[] data, String key) {         if (data == null || key == null) {             return null;         }         return asString(RC4Base(data, key));     }      public static String decry_RC4(String data, String key) {         if (data == null || key == null) {             return null;         }         return new String(RC4Base(HexString2Bytes(data), key));     }      public static byte[] encry_RC4_byte(String data, String key) throws Exception {         if (data == null || key == null) {             return null;         }         byte b_data[] = data.getBytes("UTF-8");         return RC4Base(b_data, key);     }      public static String encry_RC4_string(String data, String key) throws Exception {         if (data == null || key == null) {             return null;         }         return toHexString(asString(encry_RC4_byte(data, key)));     }      private static String asString(byte[] buf) {         StringBuffer strbuf = new StringBuffer(buf.length);         for (int i = 0; i < buf.length; i  ) {             strbuf.append((char) buf[i]);         }         return strbuf.toString();     }      private static byte[] initKey(String aKey) {         byte[] b_key = aKey.getBytes();         byte state[] = new byte[256];          for (int i = 0; i < 256; i  ) {             state[i] = (byte) i;         }         int index1 = 0;         int index2 = 0;         if (b_key == null || b_key.length == 0) {             return null;         }         for (int i = 0; i < 256; i  ) {             index2 = ((b_key[index1] & 0xff)   (state[i] & 0xff)   index2) & 0xff;             byte tmp = state[i];             state[i] = state[index2];             state[index2] = tmp;             index1 = (index1   1) % b_key.length;         }         return state;     }      private static String toHexString(String s) {         String str = "";         for (int i = 0; i < s.length(); i  ) {             int ch = (int) s.charAt(i);             String s4 = Integer.toHexString(ch & 0xFF);             if (s4.length() == 1) {                 s4 = '0'   s4;             }             str = str   s4;         }         return str;// 0x表示十六进制     }      private static byte[] HexString2Bytes(String src) {         int size = src.length();         byte[] ret = new byte[size / 2];         byte[] tmp = src.getBytes();         for (int i = 0; i < size / 2; i  ) {             ret[i] = uniteBytes(tmp[i * 2], tmp[i * 2   1]);         }         return ret;     }      private static byte uniteBytes(byte src0, byte src1) {         char _b0 = (char) Byte.decode("0x"   new String(new byte[] { src0 })).byteValue();         _b0 = (char) (_b0 << 4);         char _b1 = (char) Byte.decode("0x"   new String(new byte[] { src1 })).byteValue();         byte ret = (byte) (_b0 ^ _b1);         return ret;     }      private static byte[] RC4Base(byte[] input, String mKkey) {         int x = 0;         int y = 0;         byte key[] = initKey(mKkey);         int xorIndex;         byte[] result = new byte[input.length];          for (int i = 0; i < input.length; i  ) {             x = (x   1) & 0xff;             y = ((key[x] & 0xff)   y) & 0xff;             byte tmp = key[x];             key[x] = key[y];             key[y] = tmp;             xorIndex = ((key[x] & 0xff)   (key[y] & 0xff)) & 0xff;             result[i] = (byte) (input[i] ^ key[xorIndex]);         }         return result;     }      public static void main(String[] args) throws Exception {         String key = "12341ab0d3eee56b725e3e29999762a8";          System.out.println(RC4Util.encry_RC4_string(                 "{\"header\":{\"appid\":\"123\",\"sid\":\"12315101114235600078\",\"cmd\":\"00000001\"}}", key));          System.out.println(RC4Util.decry_RC4(                 "71881d480db384878e16d5bb822f59ee6a723aa8590627f7f47d688e2de636a6f466b412fade06226068ca10de0352055631b93868d160b2b7bd10c83741a4f5f4528c4533c0657d",                 key));      } }

标签: 200v3900uf大容量电容250v3900uf大功率电容

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

 锐单商城 - 一站式电子元器件采购平台  

 深圳锐单电子有限公司