风也温柔

计算机科学知识库

java aes加密解密算法 java aes加密 c 解密算法_AES加密解密算法---java

  .BFGJ.AES;.util.;.util.;..;..;..;..spec.;..spec.;..spec.;/* 算法加密解密

  *

  *@

  *@

  */

   class

  {()

  {

  } final = (); final =""; final ="GBK";/* 16进制字符数组*/

   final [] ={"0", "1", "2", "3", "4", "5", "6", "7","8", "9", "a", "b", "c", "d", "e", "f"};/* AES密匙*/

   final byte[] ={0x11, 0x22, 0x4F, 0x58, (byte)0x88, 0x10, 0x40, 0x38,0x28, 0x25, 0x79, 0x51, (byte)0xCB, (byte)0xDD, 0x55,0x66}; //16字节的密钥,可以改变

  /* 一位Byte到16进制字符串的转换

  *@ byte

  @/

   (byteb)

  {int n =b;if(n < 0)

  {

  n= 256 +n;

  }int d1 = n / 16;int d2 = n % 16; [d1] +[d2];

  }/* Byte数组到16进制字符串的转换

  *@ byte[]

  @/

   (byte[] b)

  {

   = ();for(int i = 0; i < b.; i++)

  {

  .((b[i]));

  }.();

  }/* 16进制字符串到Byte转换

  *@

  @/

   ( b)

  {int By = 0;

   b1= b.(0, 1);int b11 = -1;

   b2= b.(1);int b12 = -1;for(int i = 0; i < 16; i++)

  {if(b1.([i]))

  {

  b11=i;

  }

  }for(int i = 0; i < 16; i++)

  {if(b2.([i]))

  {

  b12=i;

  }

  }

  By= b11 * 16 +b12;if(By > 256)

  {

  By= By - 256;

  }(byte)By;

  }/* 16进制字符串到Byte数组的转换

  *@

  @[]/

   byte[] ( b)

  {byte[] r = new byte[b.()/2];for(int i = 0; i < b.() / 2; i++)

  {

  r[i]= (b.(i 2, i 2 + 2));

  };

  } ()

  {;

  }/* 将加密文本进行解密;

  *

  *@

  *

  @/

   ( )

  {//通过形成一个key

   key = new (, "AES");//获得一个私鈅加密类java aes加密解密算法,ECB是加密方式,是填充方法

   = .("AES/ECB/");//使用私鈅解密

  .init(., key);byte[] =();byte[] =.(); (, );

  }/* 将传进来的明文以AES算法进行加密

  *

  *@

  *

  @/

   ( text)

  {byte[] =text.();//通过形成一个key

   key = new (, "AES");//获得一个私鈅加密类java aes加密解密算法 java aes加密 c 解密算法_AES加密解密算法---java,ECB是加密方式java aes加密解密算法,是填充方法

   = .("AES/ECB/");//使用私鈅加密

  .init(., key);byte[] =.();

   b=(); b; //密码,转换成16进制

  }/* 将加密文本进行解密;

  *

  *@

  *

  @/

   ( )

  {if ( == null || .() == 0) { ""; }

   pbks= (().());

   skf= .("");

   k=skf.(pbks);

   st= new ((), " ");int num = 0;byte[] salt = new byte[8];while (st.() && (num < 8))

  {

  salt[num]= (byte) (.(st.()));

  num++;

  }int count = 0;byte[] = new byte[2000];while(st.())

  {

  [count]= (byte) (.(st.()));

  count++;

  }byte[] cb = new byte[count];for (int i = 0; i < cb.; i++)

  {

  cb[i]=[i];

  }

   cp= .("");

   ps= new (salt, 1000);

  cp.init(., k, ps);byte[] ptext =cp.(cb); (ptext);

  }/* 将传进来的明文以算法进行加密

  *

  *@

  *

  @/

   ( text)

  {if (text == null || text.() == 0) { ""; }

   pbks= (.());

   skf= .("");

   k=skf.(pbks);byte[] salt = new byte[8];

   r= ();

  r.(salt);

   cp= .("");

   ps= new (salt, 1000);

  cp.init(., k, ps);byte[] ptext =text.();byte[] ctext =cp.(ptext);

   = "";for (int i = 0; i < salt.; i++)

  {

  += salt[i] + " ";

  }for (int i = 0; i < ctext.; i++)

  {

  += ctext[i] + " ";

  }();

  }/* 将16进制编码的字符串转换为带有空格分隔的字符串

  * 比如: ==> -8 -102 -33 -54 42 -23 113 -104 23 -45 87 90 -107 64 96 12

  *@

  *@

  */

   ( s)

  {

   ret= "";for (int i = 0; i < s.() / 2; i++)

  {

  ret+= .(.(s.(2 i, 2 i + 2), 16)) + " ";

  }if (ret.(" ")) ret.(0, ret.() - 1);;

  }/* 将加密的带有空格分隔的字符转换为16进制编码的字符串.

  * 比如:-8 -102 -33 -54 42 -23 113 -104 23 -45 87 90 -107 64 96 12 ==>

  *@

  *@

  */

   ( str)

  {

  [] split= str.split(" ");byte[] b = new byte[split.];for (int i = 0; i < split.; i++)

  {

  b[i]=Byte.(split[i]);

  }

   hs= "";

   stmp= "";for (int n = 0; n < b.; n++)

  {

  stmp= (.(b[n] & 0XFF));if (stmp.() == 1)

  hs= hs + "0" +stmp;else hs = hs +stmp;

  }.();

  } ([] args)

  {try{

   en=() .();//要加密的用户工号

   = "1";//用户工号加密后的值

   =en.();

  .out.("-->"+);

  .out.("-->"+en.());//对加密的用户工号进行解密

  .out.(en.().());

  }catch( e)

  {

  e.();

  }

  }

  }

  文章来源:https://blog.csdn.net/weixin_42619742/article/details/114181632