我在使用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。任何人都可以建议我如何解密加密文件?
答案 0 :(得分:2)
您的文件几乎肯定不是RSA加密的。它可能在随机对称密钥下使用AES加密,然后使用RSA加密密钥。
您假设有人使用RSA实际加密了整个文件。假设实现甚至允许你这样做(我已经看到了在尝试这个时抛出异常的那些),那么做任何有用的东西都会太慢。