2012-06-16 4 views
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을 반환합니다. 누구든지 내가 암호화 된 파일을 해독 할 수있는 방법을 제안 할 수 있습니까?

+3

전체 파일이 RSA로 암호화되어 있습니까? 그것은 매우 드문 경우입니다 (너무 느립니다). 일반적으로 AES와 같은 하이브리드 암호화는 파일 (임의의 AES 키를 사용한 파일 암호화 후 RSA로 AES 키 암호화)에 사용됩니다. – Robert

+1

당신은 읽고있는 파일이 존재하고 데이터를 가지고 있습니까? –

+2

RSA Cipher 인스턴스는 보유하고있는 데이터의 양에 관계없이 * one * 블록 만 암호화하거나 해독합니다. 이것이 한 블록에 일반적으로 AES 키와 같은 대칭 암호화 키가 포함되어있는 이유입니다. –

답변

2

파일이 RSA 암호화 된 것은 아닙니다. 아마 임의의 대칭 키 아래에서 AES로 암호화되고 키는 RSA로 암호화됩니다.

누군가 RSA를 사용하여 실제로 전체 파일을 암호화했다고 가정합니다. 구현을 가정한다고해도 (이것을 시도 할 때 예외를 던지는 것을 보았습니다.) 아무리 유용하더라도 너무 느린 방식 일 것입니다.

관련 문제