- 精华
- 阅读权限
- 130
- 好友
- 相册
- 分享
- 听众
- 收听
- 注册时间
- 2011-9-9
- 在线时间
- 小时
- 最后登录
- 1970-1-1
|
发表于 2024-2-18 13:21:02
|
显示全部楼层
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
public class AESUtil {
public static String encrypt(String data, String key) {
try {
return doAES(data, key, 1);
} catch (Exception var3) {
return null;
}
}
public static String decrypt(String data, String key) throws Exception {
return doAES(data, key, 2);
}
private static String doAES(String data, String key, int mode) throws Exception {
boolean encrypt = mode == 1;
byte[] content;
if (encrypt) {
content = data.getBytes("UTF-8");
} else {
content = parseHexStr2Byte(data);
}
KeyGenerator kgen = KeyGenerator.getInstance("AES");
SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
secureRandom.setSeed(key.getBytes());
kgen.init(128, secureRandom);
SecretKey secretKey = kgen.generateKey();
byte[] enCodeFormat = secretKey.getEncoded();
SecretKeySpec keySpec = new SecretKeySpec(enCodeFormat, "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(mode, keySpec);
byte[] result = cipher.doFinal(content);
return encrypt ? parseByte2HexStr(result) : new String(result, "UTF-8");
}
public static String parseByte2HexStr(byte[] buf) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < buf.length; ++i) {
String hex = Integer.toHexString(buf[i] & 255);
if (hex.length() == 1) {
hex = '0' + hex;
}
sb.append(hex.toUpperCase());
}
return sb.toString();
}
public static byte[] parseHexStr2Byte(String hexStr) {
if (hexStr.length() < 1) {
return null;
} else {
byte[] result = new byte[hexStr.length() / 2];
for (int i = 0; i < hexStr.length() / 2; ++i) {
int high = Integer.parseInt(hexStr.substring(i * 2, i * 2 + 1), 16);
int low = Integer.parseInt(hexStr.substring(i * 2 + 1, i * 2 + 2), 16);
result[i] = (byte) (high * 16 + low);
}
return result;
}
}
public static void main(String[] args) throws Exception {
String key = "Empathic_202210";
// 解密
System.out.println(AESUtil.decrypt("4FCE3841E803F1D63A2216C238CE7495", key));
// 加密
System.out.println(AESUtil.encrypt("111.229.213.189", key));
}
}
|
|