2016-10-28 5 views
0

RSA로 암호화하려고하는 대용량 파일이 있습니다. 예,이 경우 하이브리드 암호화가 일반적으로 사용된다는 것을 알고 있지만 표준 공개 키 암호화를 사용하여 효율성 차이를 확인하고 싶습니다.블록 단위로 파일 암호화

큰 파일을 암호화하려면 블록 단위로 암호화해야한다는 것을 이해합니다. 받은 바이트 배열이 너무 커서 RSA-2048로 암호화 할 수 없다는 오류가 발생하면 바이트 배열을 245 바이트로 줄였습니다. 246 바이트의 바이트 배열 잘 작동하지만 그것은 또한 내 문제는 246 바이트 작동합니다. RSA-2048로 전체 파일을 암호화해야합니다.

더 나은 이해를 얻기 위해 RSA-2048 암호를 연구하고 블록 암호화로 차단 한 후 RSA-2048을 통한 블록 암호화 구현에 대해 여전히 혼란 스럽습니다. 모든 언어로 암호화를 구현 한 것은 이번이 처음입니다. 다음은 RSA 공개 키로 큰 파일을 암호화하는 코드입니다.

RSA를 사용하여 대용량 파일 블록을 블록별로 암호화하는 방법에 대한 제안 사항에 감사드립니다.

+0

아니요, "하이브리드 암호화가 일반적으로이 경우에 사용된다는 것을 알고 있지만"지식이없는 개발자는 아닙니다. 대칭 및 비대칭 암호화는 특성을 기반으로 각각의 위치를 ​​가지고 있으며, 1000 대의 소형차를 사용하여 초고층 건물에 콘크리트를 제공하지 않는 것처럼 사용합니다. RSA (Asymmetric Encryption)를 사용하는 이유는 무엇입니까? 공개 키와 개인 키 쌍이 필요합니까? 마지막으로, 프로덕션 코드에서이 코드를 사용하지 않기를 바랍니다. – zaph

답변

1

먼저 무엇을 말하든 관계없이 은 RSA를 블록 암호으로 사용하지 않아야합니다. 프로덕션 코드에서이 작업을 수행하고 누군가 발견 한 경우 가장 많이 해고 될 것입니다.

하지만 ...

  • 당신은 FileInputStream에서 ~ 246 바이트 개까지 읽어야한다.
  • RSA를 사용하여이 결과를 암호화하십시오.
  • 암호화 된 블록을 FileOutputStream에 작성하십시오. 당신은 즉시 암호문의 첫 번째 블록을 반환

    • :이 때문에

    코드는하지 않습니다 당신은 결과에 아무것도하지

    inputfile= cipher.doFinal(block); return inputfile;

  • .
+0

내 업데이트를 참조하십시오. 나는 내가 무엇을 돌려 줄 것인지 혼란 스럽다. –

+0

@SamHunt 나는 처음부터 시작해야하고, while 루프, 파일 I/O를 먼저 배워야한다고 생각한다. 귀하의 코드는 말이되지 않습니다. 코드를 반환하면 한 번만 반복됩니다. –

+0

while 루프와 파일 I/O에 관해 읽었습니다. 나는 제 자신을 가르치고 있습니다. 선생님, 제가 어디에서 돌아올 지 설명해 주시겠습니까? 혼란스러운 점 사과 드리지만, 많은 시간을 들여서 열심히 노력하고 있습니다. 고맙습니다. –