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을 반환합니다. 누구든지 내가 암호화 된 파일을 해독 할 수있는 방법을 제안 할 수 있습니까?
전체 파일이 RSA로 암호화되어 있습니까? 그것은 매우 드문 경우입니다 (너무 느립니다). 일반적으로 AES와 같은 하이브리드 암호화는 파일 (임의의 AES 키를 사용한 파일 암호화 후 RSA로 AES 키 암호화)에 사용됩니다. – Robert
당신은 읽고있는 파일이 존재하고 데이터를 가지고 있습니까? –
RSA Cipher 인스턴스는 보유하고있는 데이터의 양에 관계없이 * one * 블록 만 암호화하거나 해독합니다. 이것이 한 블록에 일반적으로 AES 키와 같은 대칭 암호화 키가 포함되어있는 이유입니다. –