.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