- 首页 > it技术 > >
package com.icbc.api.test;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.security.Key;
/**
* 描述:3des加密
*
* @author wangcheng
* @create 2019-06-13-16:20
*/
public class TDESDemo {
public static String tdes_key="cputest";
public static void main(String[] args) throws Exception {
String[] args1 = new String[1];
args1[0] = "123";
System.out.println(des_encode(args1));
String[] args2 = new String[1];
args2[0] = des_encode(args1);
System.out.println(des_decode(args2));
}
public static String des_encode(String[] args) throws Exception {
String des_key = tdes_key;
Key key = Get3DESKey(des_key.getBytes());
Cipher cipher = Cipher.getInstance("DES");
cipher.init(1, key);
return byteArr2HexStr(cipher.doFinal(args[0].getBytes()));
}
public static String des_decode( String[] args) throws Exception {String des_key = tdes_key;
Key key = Get3DESKey(des_key.getBytes());
Cipher cipher = Cipher.getInstance("DES");
cipher.init(2, key);
return new String(cipher.doFinal(hexStr2ByteArr(args[0])));
}
private static Key Get3DESKey(byte[] key) throws Exception {
byte[] tmpKey = new byte[8];
for (int i = 0;
(i < key.length) && (i < tmpKey.length);
++i) {
tmpKey[i] = key[i];
}SecretKeySpec secretKeySpec = new SecretKeySpec(tmpKey, "DES");
return secretKeySpec;
}
public static String byteArr2HexStr(byte[] value) throws Exception {
int i = value.length;
StringBuffer buf = new StringBuffer(i * 2);
for (int j = 0;
j < i;
++j) {
int k = value[j];
while (k < 0) {
k += 256;
}if (k < 16)
buf.append("0");
buf.append(Integer.toString(k, 16));
}
return buf.toString();
}
public static byte[] hexStr2ByteArr(String value) throws Exception {
byte[] bs1 = value.getBytes();
int i = bs1.length;
byte[] bs2 = new byte[i / 2];
for (int j = 0;
j < i;
j += 2) {
String str = new String(bs1, j, 2);
bs2[(j / 2)] = (byte) Integer.parseInt(str, 16);
}
return bs2;
}
}
推荐阅读