Я разрабатываю загрузчик USB для встроенной системы, и одно из моих требований заключается в том, что передача данных через USB должна быть безопасной (потерпите меня, я новичок в шифровании). Я решил зашифровать данные с помощью AES, но данные не всегда представляют собой хорошие 16-байтовые фрагменты, поэтому мне нужно их дополнить. Кажется, что PKCS7 — это стандартный метод, используемый при заполнении данных для AES (не говоря уже о том, что это довольно простой), поэтому я думаю, что хотел бы использовать его.
Проблема в том, что я не могу понять, как PKCS7 не теряет данные. Поясню на примере:
Представьте себе 16-байтовый буфер, который нужно зашифровать, последний символ которого равен 0x01. Теперь представьте, что нужно зашифровать 15-байтовый буфер... этот буфер будет дополнен 0x01. После того, как оба буфера зашифрованы, переданы, получены и расшифрованы, как получатель распознает разницу между буфером с заполнением и буфером, фактический последний символ которого равен 0x01?
Я чувствую, что мне чего-то не хватает в спецификации PKCS7. Может ли кто-нибудь помочь мне понять? Заранее спасибо.