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

 

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

 

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

 

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

 

그래서 pkcs7Pad를 이용하였다.

 

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

 

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

 

출력 결과

 

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

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

 

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

 

반응형

파일을 Hex array로 변환하고 C 헤더파일로 만드는 간단한 프로그램..

만들었지만 사용은 하지않고 있는 중.. 어딘가 사용되겠지..?

 

전체적인 구조는 다음과 같다. 

 

1. 변환하려는 파일을 Open한다. 

2. Output 파일에 먼저 헤더파일 형식(#include .. 등등 )을 Write 한다. 

3. 변환하려는 파일을 한 바이트씩 읽어 HEX형태로 Write한다. 

4. 끝!

 

전체적인 코드

 

반응형

+ Recent posts