Стандартное использование расширенного шифрования в C - PullRequest
0 голосов
/ 27 января 2011

у меня есть этот источник, но мне трудно его использовать http://www.hoozi.com/Articles/AESEncryption.htm Кажется, я не могу использовать его в своем коде, поскольку он шифрует только первые 16 символов, я надеялся, что кто-топомогает мне зашифровать этот символ *

 char *Data = NULL;
 asprintf(&Data, "%s|%s", var1 /* Unknown Length */, var2);

любой пример кода, пожалуйста, для шифрования данных после использования asprintf?

спасибо ...

Ответы [ 2 ]

4 голосов
/ 27 января 2011

AES - это блочное шифрование.Работает по одному блоку за раз.Одна возможность - просто вызвать его один раз для каждого 16-байтового блока в вашем входе.Когда вы доберетесь до конца ввода, добавьте последний фрагмент в 16 байтов и зашифруйте его.Это называется режимом «Электронная кодовая книга» (ECB).Недостатком является то, что если есть два (или более) блока ввода, которые идентичны, они будут производить идентичный вывод.В этом случае ECB рекомендуется только редко.

Существует ряд других режимов работы , которые позволяют избежать этой проблемы.Мой совет будет искать другую библиотеку, которая уже реализует их (например, я уверен, что beecrypt делает).К сожалению, не зная, что вы делаете, трудно сказать, какой из них наиболее подходит, но я бы начал , посмотрев на CBC и CFB на этой странице как пару разумных возможностей.

0 голосов
/ 27 января 2011

AES шифрует в 16-байтовых блоках.Чтобы зашифровать более одного блока данных, вам необходимо использовать его с одним из режимов работы .Я бы рекомендовал использовать CBC mode .Вы также захотите заполнить нулями свои данные и до 16-байтовой границы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...