/**
*
* <p>Title: encrypt</p>
* <p>Description:DES加密操作 </p>
* @param source 要加密的源
* @param key 约定的密钥
* @return
* @author MJF
*/
public static String encrypt(String source, String key) {
try {
SecretKey strKey = generateMySQLAESKey(key,"ASCII");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, strKey);
byte[] cleartext = source.getBytes("UTF-8");
byte[] ciphertextBytes = cipher.doFinal(cleartext);
return new String(Hex.encodeHex(ciphertextBytes));
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* <p>Title: decrypt</p>
* <p>Description:解密 </p>
* @param source 密文
* @param key 约定的密钥
* @return
* @author MJF
*/
public static String decrypt(String source, String key) {
try {
SecretKey AESkey = generateMySQLAESKey(key,"ASCII");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.DECRYPT_MODE, AESkey);
byte[] cleartext = Hex.decodeHex(source.toCharArray());
byte[] ciphertextBytes = cipher.doFinal(cleartext);
return new String(ciphertextBytes, "UTF-8");
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static SecretKeySpec generateMySQLAESKey(final String key, final String encoding) {
try {
final byte[] finalKey = new byte[16];
int i = 0;
for(byte b : key.getBytes(encoding))
finalKey[i++%16] ^= b;
return new SecretKeySpec(finalKey, "AES");
} catch(Exception e) {
throw new RuntimeException(e);
}
}
java实现mysql HEX(AES_ENCRYPT(val,‘salt‘))加密,AES_DECRYPT(UNHEX(val),‘salt‘) 解密操作
最新推荐文章于 2024-05-26 14:34:02 发布