2

코드 https://play.golang.org/p/CUEqjsJq5cRSA로 대용량 파일을 암호화하는 방법은 무엇입니까?

오류 :

panic: crypto/rsa: message too long for RSA public key size 

goroutine 1 [running]: 
panic(0x4a6d80, 0xc420010420) 
    /usr/local/go/src/runtime/panic.go:500 +0x1a1 
main.main() 
    /tmp/sample.go:28 +0xfa 

파일 크기 (테스트 암호화 자체 소스 파일) 811 바이트. 더 큰 파일 몇장을 암호화하고 싶습니다. RSA로 할 수 있습니까? 아니면 다른 방법을 사용해야합니까?

+2

RSA는 대용량 파일을 암호화하는 데 적합하지 않습니다. 구글 그것. 일반적으로 작은 AES 키를 생성하고 AES 키를 RSA 키로 인코딩 한 다음 AES 키로 대용량 파일을 암호화하는 작업을 계속합니다 (대칭 암호화). – icza

+0

@ icza의 의견 외에도 golang rsa 패키지에는 다음에 대한 참고 사항이 있습니다. https://golang.org/src/crypto/rsa/rsa.go#L335 – Momer

+0

그러나 대칭 키를 RSA 암호화 할 필요는 없습니다 공용/개인 키 쌍이 필요합니다. 공용/개인 키 쌍에 대한 iuse 사례는 무엇입니까? – zaph

답변

3

RSA는 키 길이보다 작은 데이터 만 암호화 할 수 있습니다.

대답은 크고 작은 데이터를 암호화하도록 설계된 AES와 같은 대칭 알고리즘으로 데이터를 암호화하는 것입니다.

RSA 공개 키/개인 키 쌍이 필요한 경우 RSA로 대칭 (AES) 키를 암호화합니다. 이를 하이브리드 암호화라고하며 본질적으로 HTTPS는 데이터를 암호화합니다.

공개 키/개인 키 쌍이 필요하지 않으면 대칭 키를 RSA로 암호화 할 필요가 없습니다. 일반적인 경우에는 대칭 (AES)과 그 키를 사용합니다. 공개 키/개인 키 쌍의 사용 사례는 무엇입니까?