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 进行加密和解密。开发者可以根据自己的实际需求修改代码,实现更加复杂和安全的加密功能。

Java Long 型 ID 加密解密:AES 算法实现

原文地址: https://www.cveoy.top/t/topic/hGld 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录