JAVA纯数字加密成字符串(可解密)

在Java中,将纯数字加密成字符串并且可逆解密,可以通过对称加密算法来实现。常见的对称加密算法包括AES(Advanced Encryption Standard)。下面是一个简单的示例,演示如何使用AES算法将数字加密成字符串,并且再解密还原回原始数字:

java
import 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)); } }

解释代码关键点:

  1. 生成AES密钥:使用 KeyGenerator.getInstance("AES").generateKey() 生成AES对称加密算法的密钥。

  2. 加密方法(encrypt)

    • 使用 Cipher 类初始化为加密模式。
    • 将数字转换为字节数组,然后进行加密操作。
    • 使用 Base64 编码将加密后的字节数组转换为字符串,便于存储和传输。
  3. 解密方法(decrypt)

    • 使用 Cipher 类初始化为解密模式。
    • 使用 Base64 解码将加密字符串解析为字节数组。
    • 对解密后的字节数组进行解密操作,并将解密结果转换为整数类型。
  4. 注意事项

    • 加密和解密的密钥必须相同,否则无法正确解密。
    • 对于安全要求较高的情况,可以考虑密钥的安全存储和管理问题。

这个示例演示了如何使用AES算法对数字进行加密和解密,确保了加密后的字符串可以再次还原为原始数字。