>백엔드 개발 >Golang >cipher.AEAD.Seal()을 사용하여 메모리 사용량을 확인하세요.

cipher.AEAD.Seal()을 사용하여 메모리 사용량을 확인하세요.

WBOY
WBOY앞으로
2024-02-06 10:03:03996검색

使用 cipher.AEAD.Seal() 查看内存使用情况

질문 내용

Go의 ChaCha20-Poly1305 구현을 사용하여 데이터를 암호화하고 있는데 일부 대용량 파일을 암호화할 때 메모리 사용량이 예상보다 높습니다. 내가 아는 한, Go의 AEAD 암호 구현은 해시를 생성하기 위해 전체 데이터를 메모리에 유지해야 한다는 것을 의미하지만 메모리 사용량은 일반 텍스트 크기의 두 배입니다.

4GiB의 데이터를 암호화하려는 다음 작은 프로그램은 이를 강조합니다(실제 프로그램에서는 keynonce 비어 있으면 안 됨).

으아악

crypto/cipher/gcm.go 소스 코드(AES-GCM 및 ChaCha20-Poly1305 모두에서 사용됨)에 따르면 다음과 같은 설명이 있습니다.

으아악

이것은 메모리를 재사용할 수 있어야 함을 의미합니다. 이 작업을 시도했지만 내 애플리케이션에서 사용하는 메모리 양에는 영향을 미치지 않습니다. 호출한 후에는 Seal() 항상 8GiB의 메모리를 사용하게 됩니다. GiB의 데이터를 암호화하시겠습니까?

으아악

암묵적으로 메모리를 재사용한다면 AEAD 암호가 암호문에 추가하는 상대적으로 작은 해시 외에는 큰 증가를 기 대해서는 안 됩니까?


정답


암호문에 추가된 인증 토큰을 고려하는 것을 잊으셨습니다. 초기 할당에서 공간을 확보하면 추가 할당이 필요하지 않습니다. ​​

으아악

위 내용은 cipher.AEAD.Seal()을 사용하여 메모리 사용량을 확인하세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제