C

Crypto Project : 1-4. C언어에서 멤버변수 접근을 막는 방법과 init, update, final의 개념
시작하며 지난 글에선 암호화, 복호화 함수 enc와 dec를 살펴보았다. enc와 dec 모두 input을 받으면 패딩까지 완벽하게 처리하여 output을 내주는 함수였다. 그러나 이 함수에는 약간의 단점이 있는데, 함수를 실행시키면 무조건 암호화, 혹은 복호화를 "완료" 한다는 것이다. 무슨 말이냐면, 우선 패딩처리가 무조건 된다는 것이다. 패딩은 데이터의 마지막에만 붙이는 것을 원칙으로 한다. 즉 이 함수는 반드시 패딩에 대한 처리를 진행하므로 내가 아직 암호화할 데이터가 남아있음에도, 암호문을 완성해버린다는 것이다. 즉 데이터를 분할해서 암호화할 수 없다. 예로, 네트워크 상에서 내가 전송 받을 데이터는 한번에 다 받는 것을 보장할 수 없다. 상대방이 나에게 암호화한 데이터를 전송하고 내가 복호화를..

Crypto Project : 1-3. 암호화, 복호화 함수(enc, dec)
시작하며 지난 글에서 ecb 한블록 암호화를 이용하여 cbc와 ctr 모드의 구현을 살펴보았고, 이제 이 둘을 이용해 제대로 암호화를 진행하는 end, dec 함수의 구현을 살펴보겠다. 이 암복호화 함수는 CBC, CTR 모드 두가지를 지원하며, 암호 알고리즘, 암복호화에 필요한 파라미터 구조체, 암복호화에 필요한 키, 인풋과 아웃풋을 파라미터로 받아 기능을 수행한다. 이전 글에서 다뤘던 cbc, ctr 함수는 패딩처리까지 진행하지 않았고 이 enc, dec에서 마지막에 패딩처리를 해주는 방식이다. 이제 설명을 시작하겠다. 1. 파라미터 어때요..? 뭔가 직접 Doxygen으로 문서화 한걸로 딱 올리니까... 나 좀 있어보이는..... 뭔가 자랑스러운...... 기분좋은... 아무튼 위는 함수 파라미터를..