Java Long 型 ID 加密解密:AES 算法实现
Java Long 型 ID 加密解密:AES 算法实现
本文提供一个 Java 代码示例,使用 AES 加密算法对 Long 型 ID 进行复杂加密,并提供对应的解密方法,实现安全的数据保护。
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;
public class IdEncryptor {
private static final String SECRET_KEY = 'mysecretkey';
public static String encryptId(long id) {
try {
Cipher cipher = Cipher.getInstance('AES/ECB/PKCS5Padding');
SecretKeySpec secretKeySpec = new SecretKeySpec(SECRET_KEY.getBytes(), 'AES');
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
byte[] encryptedBytes = cipher.doFinal(String.valueOf(id).getBytes());
return Base64.getEncoder().encodeToString(encryptedBytes);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static long decryptId(String encryptedId) {
try {
Cipher cipher = Cipher.getInstance('AES/ECB/PKCS5Padding');
SecretKeySpec secretKeySpec = new SecretKeySpec(SECRET_KEY.getBytes(), 'AES');
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
byte[] decryptedBytes = cipher.doFinal(Base64.getDecoder().decode(encryptedId));
return Long.parseLong(new String(decryptedBytes));
} catch (Exception e) {
e.printStackTrace();
}
return -1;
}
public static void main(String[] args) {
long originalId = 123456789L;
String encryptedId = encryptId(originalId);
System.out.println('Encrypted ID: ' + encryptedId);
long decryptedId = decryptId(encryptedId);
System.out.println('Decrypted ID: ' + decryptedId);
}
}
代码解释
encryptId方法:- 接收一个
long型 ID 作为参数。 - 将 ID 转换为字符串,使用 AES 算法进行加密。
- 使用 Base64 编码将加密后的结果转换为字符串并返回。
- 接收一个
decryptId方法:- 接收加密后的字符串作为参数。
- 使用 Base64 解码将字符串转换为字节数组。
- 使用 AES 算法进行解密。
- 将解密后的结果转换为字符串,再转换为
long型并返回。
main方法:- 创建一个原始 ID。
- 调用
encryptId方法进行加密。 - 调用
decryptId方法进行解密。 - 打印加密前后的结果。
注意
- 在实际应用中,建议使用更安全的密钥生成方式,例如使用随机数生成器或密钥库。
- 可以根据实际需求调整加密算法和填充模式。
- 为了提高安全性,可以考虑在加密和解密时添加额外的校验机制,例如 MAC (消息认证码)。
总结
本文提供了一个简单的 Java 代码示例,使用 AES 算法对 Long 型 ID 进行加密和解密。开发者可以根据自己的实际需求修改代码,实现更加复杂和安全的加密功能。
原文地址: https://www.cveoy.top/t/topic/hGld 著作权归作者所有。请勿转载和采集!