PKCS#7 패딩 관련 질문
PKCS#7은 패딩 방식이 비는 바이트에 비는 바이트 수와 같은 값을 패딩하는 것으로 강의를 통해 배웠습니다. 예를 들어 16블록 사이즈에서 00을 15바이트 입력하면 1바이트가 부족하여 01이 패딩되는 식으로요.
그렇다면 00을 15바이트만큼 입력하고 추가로 01을 사용자가 입력하면 PKCS#7에서 패딩한 것과 입력값이 같아져서 암호화된 값이 같아야하는 것 아닌가요? 해당 문제에서 제가 생각했던 것과 달라 질문 드립니다.
#암호
작성자 정보
답변
1
사용자
해결사
추가로 \x01
을 메세지에 추가해주셨다면 사용자의 메세지가 16바이트가 되므로, \x10 * 16
가 패딩으로 추가되는 것으로 알고 있습니다.
\x00 * 15
--(패딩 후)-->\x00 * 15 + \x01
\x00 * 15 + \x01
--(패딩 후)-->\x00 * 15 + \x01 + \x10 * 16
With PKCS7, if your input is already a multiple of 16 bytes, then an extra block is added for padding. If your input is not a multiple of 16 bytes, then round up to the nearest multiple of 16.