Golang에서 제공되는 라이브러리를 이용하여 AES CBC 암호화를 하였다.
암호화의 기본 이론들이나 원리들은 잘 모르지만....
처음에 block size보다 작은 크기는 0을 추가하여 zero padding을 하고 암호화를 하였는데,
다시 복호화를 하였을 때 0이 남아있었다. (원래 그런건지.. 내가 잘못한건지...)
그래서 pkcs7Pad를 이용하였다.
패딩할때는 block size크기에 부족한 만큼 0 대신 그 크기를 넣었고,
다시 읽을 때는 맨 마지막 바이트를 읽어 그 크기 만큼 빼고 읽었다.
pkcs7Pad 패딩을 할 때는 빈 byte slice를 만들어 copy할 수도 있지만, 버퍼를 만들어 추가하는 형식으로 했다.
pkcs7Unpad 언패딩은 암호문의 맨마지막 수를 읽고, 해당 수 만큼을 제외하고 나머지를 읽도록 하였다.
CBC 암호화전에 pkcs7Pad 해주고, 복호화하고 pkcs7Unpad 해주면 된다.
끝
반응형
'지식저장소 > Golang' 카테고리의 다른 글
[Golang] Ping 테스트 (0) | 2023.07.25 |
---|---|
[Golang] File Compare - 파일 비교 (0) | 2023.03.23 |
[Golang] AES - CFB - Base64 암호화 (0) | 2021.10.22 |
[Golang] Byte Slice를 hex로 보기 쉽게 출력하기 (0) | 2020.11.10 |
[Golang] 파일을 Hex Array로 변환하는 프로그램 (0) | 2020.10.16 |