我目前正在研究一种使用密钥加密/解密特定文件的功能.我写了三个类,一个生成一个密钥,一个用密钥加密文件,另一个用密钥加密.
生成密钥并加密文件可以正常工作,但是当我尝试解密文件时,会在行处抛出异常c.init(Cipher.DECRYPT_MODE, keySpec);::
java.security.InvalidKeyException:缺少参数
我认为我byte[]在解密文件时将密钥流式传输给我或者出错了我做错了.
快速解释这三个类:KeyHandler创建一个AES密钥并将其存储在硬盘上.密钥/明文/加密/解密文件的名称当前是硬编码的,用于测试目的.
EncryptionHandler将磁盘上的.txt文件转换为字节,使用密钥加密文件,然后使用加密字节写入磁盘CipherOutputStream.
DecryptionHandler当然是相反的EncryptionHandler.
这是代码:
public class KeyHandler {
Scanner scan = new Scanner(System.in);
public KeyHandler(){
try {
startMenu();
} catch (Exception e) {
System.out.println("fel någonstanns :)");
}
}
public void startMenu() throws Exception{
System.out.println("Hej. Med detta program kan du generera en hemlig nyckel"+"\n"+"Vill du:"+"\n"+ "1. Generera en nyckel"+"\n"+"2. Avsluta");
int val=Integer.parseInt(scan.nextLine());
do{
switch (val){
case 1: generateKey(); break;
case 2: System.exit(1);
default: System.out.println("Du måste välja …Run Code Online (Sandbox Code Playgroud)