AES加密和解密Java

Posted

技术标签:

【中文标题】AES加密和解密Java【英文标题】:AES encryption and Decryption Java 【发布时间】:2015-11-09 06:37:01 【问题描述】:

我正在使用 AES 加密一个字符串,并想在其他电脑上解密它。如果我在同一台电脑上执行加密和解密工作。但是对于其他电脑上的解密,我的加密算法正在生成一个“密码密码”,这是在另一侧与密钥一起解密所需要的。我不确定如何将密码传输到另一端。

这是我的代码

 public class AESCrypt 

    static String plainText;
    static byte[] plainBytesDecrypted = new byte[1024];
    static byte[] cipherBytes = new byte[1024];
    static SecretKey key;
    static Cipher cipher;

    public AESCrypt() throws NoSuchAlgorithmException 
        KeyGenerator generator = KeyGenerator.getInstance("AES");

        generator.init(128);
        key = generator.generateKey();

    

    public static byte[] encryption(String plainBytes) 

        try 
            Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());

            cipher = Cipher.getInstance("AES/CBC/PKCS5Padding", "BC");
            cipher.init(Cipher.ENCRYPT_MODE, key);
            cipherBytes = cipher.doFinal(plainBytes.getBytes());
            System.out.println("Encrypted data : " + new String(cipherBytes));

         catch (Exception ex) 
            ex.printStackTrace();
        
        return cipherBytes;
    

    private static String bytesToHex(byte[] hash) 

        return DatatypeConverter.printHexBinary(hash);

    

    public static String Decryption() throws InvalidKeyException, IllegalBlockSizeException, InvalidAlgorithmParameterException, BadPaddingException 

        cipher.init(Cipher.DECRYPT_MODE, key, cipher.getParameters());
        plainBytesDecrypted = cipher.doFinal(cipherBytes);

        System.out.println("Decrypted data : " + new String(plainBytesDecrypted));

        return (new String(plainBytesDecrypted));
    

【问题讨论】:

你听说过Public-key cryptography吗? 【参考方案1】:

您通常有 3 个选择:

对密码/模式/填充进行硬编码,以便双方都知道您始终使用相同的格式。 在秘密消息之前发送密码/模式/填充,以便对方知道要初始化什么密码。 使用现有的协议,该协议已经为您包含了所有这些内容并且可以安全地执行。例如,您可以在 TLS 连接内发送数据。

【讨论】:

以上是关于AES加密和解密Java的主要内容,如果未能解决你的问题,请参考以下文章

java的aes加密成多少位数

如何使用java对密码加密 加密方式aes

有没有单纯实现aes加密的js算法

javaAES加密解密

Java加密,解密中的bc,cc是什么意思

JAVA AES加密