팀 프로젝트 과제로 AES 암호화 (key size : 128 bit)된 mp3 파일을 해독하여 노래 제목을 찾는 과제가 나왔다.

 

과제 조건

조건은 이 정도.

 

u8, u32 설정

u8과 u32를 설정해주고

 

inv_Sbox 생성 함수

위 함수로 inv_Sbox를 생성해 준다. 

 

inv_Sbox

inv_Sbox를 코드에 넣어주고

 

main

main 문 작성. mp3파일을 올려야 해서 fp사용.

 

File_AES_Decryption

File_AES_Decryption 함수를 작성. 기본적인 CT, PT, IV(초기 벡터), MK, RK, keysize 등을 설정해준다.

 

RoundkeyGeneration128

AES_KeySchedule에서  key가 128bit임으로 RoundkeyGeneration128 함수로 건너뛰어서 함수를 작성한다.

 

Rcon

Rcon을 설정해주고,

 

AES_RotWord & AES_SubWord

AES_RotWord(key shift column)와 AES_SubWord(Sbox 대입)를 설정해준다.

 

AES_Roundkey_4words_generation

AES_Roundkey_4words_generation로 각 라운드 키를 마저 만들어주고,

 

AES_KeyWordToByte

AES_KeyWordToByte로 32bit로 묶여있던 W배열을 8bit로 다시 쪼개 준다.

 

AES_KeySchedule을 다 수행했으므로 다시  File_AES_Decryption로 돌아간다.

 

File_AES_Decryption_2

현재 CBC모드로 암호화가 되어있기 때문에 CT에 초기 백터를 넣어준 후, 파일을 128bit만큼 각각 쪼개서 파일이 끝날 때까지 while문을 돌려 복호화해주는 방식으로 코드를 작성했다.

 

AES_DEC

AES_DEC 코드를 보면 AES_LRound(AES_Inv_MixColumn 없음), AES_Round, AES_Inv_AddRoundKey 순서로 함수를 돌면서 복호화되도록 코드를 작성했다.

 

AES_CBC

마지막으로 AES_CBC를 돌면서 복호화가 끝난다.

 

위 코드는 팀원 RyuH님의 도움으로 대부분 작성되었습니다~!

+ Recent posts