JAVA纯数字加密成字符串(可解密)
在Java中,将纯数字加密成字符串并且可逆解密,可以通过对称加密算法来实现。常见的对称加密算法包括AES(Advanced Encryption Standard)。下面是一个简单的示例,演示如何使用AES算法将数字加密成字符串,并且再解密还原回原始数字:
javaimport javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import java.util.Base64;
public class NumberEncryptionExample {
public static void main(String[] args) throws Exception {
// 原始数字
int originalNumber = 123456789;
// 生成AES密钥
SecretKey secretKey = KeyGenerator.getInstance("AES").generateKey();
// 加密数字
String encryptedNumber = encrypt(originalNumber, secretKey);
System.out.println("加密后的字符串:" + encryptedNumber);
// 解密字符串
int decryptedNumber = decrypt(encryptedNumber, secretKey);
System.out.println("解密后的数字:" + decryptedNumber);
}
// 加密方法
public static String encrypt(int number, SecretKey secretKey) throws Exception {
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
byte[] encryptedBytes = cipher.doFinal(String.valueOf(number).getBytes());
return Base64.getEncoder().encodeToString(encryptedBytes);
}
// 解密方法
public static int decrypt(String encryptedText, SecretKey secretKey) throws Exception {
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.DECRYPT_MODE, secretKey);
byte[] decryptedBytes = cipher.doFinal(Base64.getDecoder().decode(encryptedText));
return Integer.parseInt(new String(decryptedBytes));
}
}
解释代码关键点:
生成AES密钥:使用
KeyGenerator.getInstance("AES").generateKey()
生成AES对称加密算法的密钥。加密方法(encrypt):
- 使用
Cipher
类初始化为加密模式。 - 将数字转换为字节数组,然后进行加密操作。
- 使用
Base64
编码将加密后的字节数组转换为字符串,便于存储和传输。
- 使用
解密方法(decrypt):
- 使用
Cipher
类初始化为解密模式。 - 使用
Base64
解码将加密字符串解析为字节数组。 - 对解密后的字节数组进行解密操作,并将解密结果转换为整数类型。
- 使用
注意事项:
- 加密和解密的密钥必须相同,否则无法正确解密。
- 对于安全要求较高的情况,可以考虑密钥的安全存储和管理问题。
这个示例演示了如何使用AES算法对数字进行加密和解密,确保了加密后的字符串可以再次还原为原始数字。