Golang에서 제공되는 라이브러리를 이용하여 AES CBC 암호화를 하였다.

 

암호화의 기본 이론들이나 원리들은 잘 모르지만....

 

처음에 block size보다 작은 크기는 0을 추가하여 zero padding을 하고 암호화를 하였는데,

 

다시 복호화를 하였을 때 0이 남아있었다. (원래 그런건지.. 내가 잘못한건지...)

 

그래서 pkcs7Pad를 이용하였다.

 

패딩할때는 block size크기에 부족한 만큼 0 대신 그 크기를 넣었고, 

 

다시 읽을 때는 맨 마지막 바이트를 읽어 그 크기 만큼 빼고 읽었다. 

 

출력 결과

 

pkcs7Pad 패딩을 할 때는 빈 byte slice를 만들어 copy할 수도 있지만,  버퍼를 만들어 추가하는 형식으로 했다. 

pkcs7Unpad 언패딩은 암호문의 맨마지막 수를 읽고, 해당 수 만큼을 제외하고 나머지를 읽도록 하였다.

 

CBC 암호화전에 pkcs7Pad 해주고, 복호화하고 pkcs7Unpad 해주면 된다.

 

반응형

+ Recent posts