6

RSA 公開鍵復号化を使用してファイルを復号化する際に問題が発生しています。私のプロセスは、xml ファイルを受け取り、コンテンツを暗号化し、同じファイルに書き戻すことです。別の関数がコンテンツを復号化します。私のソースコードは次のとおりです。

public void decryptFile(String fileName,PrivateKey privateKey) throws Exception {
    Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
    cipher.init(Cipher.DECRYPT_MODE, privateKey);
    FileInputStream fis = new FileInputStream(fileName);
    File file=new File("decryptedfile.xml");
    if(file.exists()) {
        file.delete();
    }
            FileOutputStream fos = new FileOutputStream("decryptedfile.xml");
    CipherInputStream cis = new CipherInputStream(fis, cipher);
    int i;
    byte[] block = new byte[32];
    //System.out.println("Read : "+cis.read(block));
    while ((i = cis.read(block)) != -1) {
        System.out.println(String.valueOf(i));
        fos.write(block, 0, i);
    }
    fos.close();
}

暗号化されたファイルの名前と、対応する秘密鍵の値を関数に渡すだけです。ただし、cis.read(block)最初の試行では -1 が返されます。暗号化されたファイルを解読する方法を誰か提案できますか?

4

1 に答える 1

2

ファイルが RSA 暗号化されていないことはほぼ確実です。おそらく、ランダムな対称キーの下で AES で暗号化され、キーは RSA で暗号化されます。

誰かが実際に RSA だけを使用してファイル全体を暗号化したと想定しています。実装でこれを実行できると仮定すると (これを試行したときに例外をスローするものを見たことがあります)、有用なことを行うには遅すぎます。

于 2012-06-21T00:48:40.883 に答える