RSA на ASCII сообщениях проблемы с '\0'
Я хочу зашифровать и расшифровать сообщения ASCII, используя алгоритм RSA, написанный на ассемблере. Я читал, что по соображениям безопасности и эффективности шифрование обычно не называется посимвольным, но несколько символов сгруппированы и зашифрованы вместе (например, в Википедии сказано, что сгруппированы 3 символа). Предположим, что мы хотим зашифровать сообщение "ааа" группировкой 2 символа. "aaa" хранится как 61616100. Если мы сгруппируем два символа и зашифруем получившиеся полуслова, результат для блока 6161 может фактически быть чем-то вроде 0053. Это приведет к искусственному второму символу "\0", который искажает полученное сообщение. Есть ли способ обойти эту проблему? Использование отступов или чего-либо подобного, к сожалению, не вариант, так как я обязан использовать одну и ту же функцию для шифрования и дешифрования.
1 ответ
Выход RSA является числом. Обычно это число кодируется в виде строки октетов (или байтового массива). Вы не должны рассматривать результат как символьную строку. Вы должны рассматривать его как массив байтов с такой же длиной, что и модуль (или, по крайней мере, длина модуля в байтах).
Помимо результата, содержащего ноль (нулевой терминатор), символы могут иметь любое значение, включая непечатаемые символы, такие как управляющие символы и 7F
, Если вы хотите обработать результат как печатаемую строку, преобразуйте в hex или base64.