import java.io.UnsupportedEncodingException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
public class AESCryptoSecurity {
public AESCryptoSecurity() {
}
public static byte[] encrypt(byte[] content, String keyWord) {
try {
KeyGenerator kgen = KeyGenerator.getInstance("AES");
SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
secureRandom.setSeed(keyWord.getBytes());
kgen.init(128, secureRandom);
SecretKey secretKey = kgen.generateKey();
byte[] enCodeFormat = secretKey.getEncoded();
SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(1, key);
byte[] result = cipher.doFinal(content);
return result;
} catch (NoSuchAlgorithmException var9) {
var9.printStackTrace();
} catch (NoSuchPaddingException var10) {
var10.printStackTrace();
} catch (InvalidKeyException var11) {
var11.printStackTrace();
} catch (IllegalBlockSizeException var12) {
var12.printStackTrace();
} catch (BadPaddingException var13) {
var13.printStackTrace();
}
return null;
}
public static String encrypt(String content, String password) {
String encryptStr = null;
try {
encryptStr = parseByte2HexStr(encrypt(content.getBytes("utf-8"), password));
} catch (UnsupportedEncodingException var4) {
var4.printStackTrace();
}
return encryptStr;
}
public static byte[] decrypt(byte[] content, String keyWord) {
try {
KeyGenerator kgen = KeyGenerator.getInstance("AES");
SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
secureRandom.setSeed(keyWord.getBytes());
kgen.init(128, secureRandom);
SecretKey secretKey = kgen.generateKey();
byte[] enCodeFormat = secretKey.getEncoded();
SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(2, key);
byte[] result = cipher.doFinal(content);
return result;
} catch (NoSuchAlgorithmException var9) {
var9.printStackTrace();
} catch (NoSuchPaddingException var10) {
var10.printStackTrace();
} catch (InvalidKeyException var11) {
var11.printStackTrace();
} catch (IllegalBlockSizeException var12) {
var12.printStackTrace();
} catch (BadPaddingException var13) {
var13.printStackTrace();
}
return null;
}
public static String decrypt(String content, String keyWord) {
byte[] btVals = decrypt(parseHexStr2Byte(content), keyWord);
return btVals != null ? new String(btVals) : null;
}
public static String parseByte2HexStr(byte[] buf) {
StringBuffer sb = new StringBuffer();
byte[] arr$ = buf;
int len$ = buf.length;
for(int i$ = 0; i$ < len$; ++i$) {
byte element = arr$[i$];
String hex = Integer.toHexString(element & 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) {
String encryptStr = encrypt("7758521", "ccqwd551bcvvccqqbrrwqfdb8cdcb2dc");
System.out.println(encryptStr.toLowerCase());
System.out.println(encryptStr.length());
String result = decrypt(encryptStr, "ccqwd551bcvvccqqbrrwqfdb8cdcb2dc");
System.out.println(result);
}
}
AES加密
最新推荐文章于 2024-02-25 16:20:08 发布