无法初始化cipher.init()

时间:2018-09-28 18:36:39

标签: java aes encryption-symmetric block-cipher

我正在尝试读取1KB的文件,然后在CBC模式下使用AES算法对其进行加密和解密。当我尝试初始化密码时,它将引发错误。请在下面找到代码。 我在密码类中找不到一个接受“加密模式”,“秘密密钥”和类IvParameterSpec的初始化向量的初始化方法。我可以看到带有期望参数的初始化方法,例如(int加密模式,密钥,AlgorithmParameters参数,SecureRandom secureRandom)

我是否需要将密钥和初始化向量转换为所需的类。 任何进一步进行的见解都会有所帮助。

import sun.security.provider.SecureRandom;

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
import javax.crypto.spec.IvParameterSpec;
import java.io.File;
import java.security.AlgorithmParameters;
import java.security.Key;
import java.security.NoSuchAlgorithmException;
import java.security.spec.InvalidParameterSpecException;

public class AESFileEncryptionDecryption {
    public class AES128CBC{
        SecretKey secretKey;
        Cipher cipher;
        SecureRandom secureRandom = new SecureRandom();
        byte[] iv = new byte[16];
        IvParameterSpec ivParameterSpec = new IvParameterSpec(iv);

        {
            try {
                secretKey = KeyGenerator.getInstance("AES").generateKey();
                cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
                cipher.init(1,secretKey,ivParameterSpec);
            } catch (NoSuchAlgorithmException | NoSuchPaddingException e) {
                e.printStackTrace();
            }
        }
        }
    }
    public static void main(String[] args) {
        File inputFile_1KB = new File("/Users/siddharthsinha/Desktop/input1KB.txt");
        File encryptedFile_1KB = new File("/Users/siddharthsinha/Desktop/input1KB.encrypted");
        File decryptedFile_1KB = new File("/Users/siddharthsinha/Desktop/input1KB.decrypted.txt");
    }
}

enter image description here

1 个答案:

答案 0 :(得分:2)

您的代码既没有捕获也没有引发两个可能引发的异常:

try {
            secretKey = KeyGenerator.getInstance("AES").generateKey();
            cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
            cipher.init(1,secretKey,ivParameterSpec);
        } catch (NoSuchAlgorithmException | NoSuchPaddingException e) {
            e.printStackTrace();
        } catch (InvalidAlgorithmParameterException e) {
            e.printStackTrace();
        } catch (InvalidKeyException e) {
            e.printStackTrace();
        }