public static String encrypt(String text, String encodingAesKey, String appName) {
if (encodingAesKey.length() != 43) {
throw new RuntimeException("SymmetricKey非法");
} else {
byte[] aesKey = Base64.decodeBase64(encodingAesKey + "=");
ApiEncryptKit.ByteGroup byteCollector = new ApiEncryptKit.ByteGroup();
byte[] randomStrBytes = getRandomStr().getBytes(charSet);
byte[] textBytes = text.getBytes(charSet);
byte[] networkBytesOrder = getNetworkBytesOrder(textBytes.length);
byte[] appNameBytes = appName.getBytes(charSet);
byteCollector.addBytes(randomStrBytes);
byteCollector.addBytes(networkBytesOrder);
byteCollector.addBytes(textBytes);
byteCollector.addBytes(appNameBytes);
byte[] padBytes = ApiEncryptKit.PKCS7Encoder.encode(byteCollector.size());
byteCollector.addBytes(padBytes);
byte[] unencrypted = byteCollector.toBytes();
try {
Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
SecretKeySpec keySpec = new SecretKeySpec(aesKey, "AES");
IvParameterSpec iv = new IvParameterSpec(aesKey, 0, 16);
cipher.init(1, keySpec, iv);
byte[] encrypted = cipher.doFinal(unencrypted);
Base64 base64 = new Base64();
String base64Encrypted = base64.encodeToString(encrypted);
return base64Encrypted;
} catch (Exception var17) {
throw new RuntimeException("aes加密失败",var17);
}
}
}
public static String decrypt(String text, String encodingAesKey, String appName) {
if (encodingAesKey.length() != 43) {
throw new RuntimeException("SymmetricKey非法");
} else {
byte[] aesKey = Base64.decodeBase64(encodingAesKey + "=");
byte[] original;
byte[] networkOrder;
try {
Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
SecretKeySpec keySpec = new SecretKeySpec(aesKey, "AES");
IvParameterSpec iv = new IvParameterSpec(Arrays.copyOfRange(aesKey, 0, 16));
cipher.init(2, keySpec, iv);
networkOrder = Base64.decodeBase64(text);
original = cipher.doFinal(networkOrder);
} catch (Exception var11) {
log.info("aes解密发生错误",var11);
throw new RuntimeException("aes解密失败");
}
String content;
String fromAppName;
try {
byte[] bytes = ApiEncryptKit.PKCS7Encoder.decode(original);
networkOrder = Arrays.copyOfRange(bytes, 16, 20);
int msgLength = recoverNetworkBytesOrder(networkOrder);
content = new String(Arrays.copyOfRange(bytes, 20, 20 + msgLength), charSet);
fromAppName = new String(Arrays.copyOfRange(bytes, 20 + msgLength, bytes.length), charSet);
} catch (Exception var10) {
throw new RuntimeException("解密后得到的buffer非法",var10);
}
if (!fromAppName.equals(appName)) {
throw new RuntimeException("appName校验失败");
} else {
return content;
}
}
}
String v1 = "0f4VyZKuylYB3IDAx3sXCjlg55gnoabU5W9I5KtW309";
String encrypt = ApiEncryptKit.encrypt("13627135947", v1, "123");
String decrypt = ApiEncryptKit.decrypt(encrypt, v1, "123");
加解密aes
于 2022-12-13 21:28:04 首次发布