C中的高级加密标准用法

时间:2011-01-27 17:13:32

标签: c encryption aes

我有这个来源,但我很难使用它 http://www.hoozi.com/Articles/AESEncryption.htm 我似乎无法在我的代码中使用它,因为它只加密它的前16个字符,我希望有人帮我加密那个字符*

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

任何代码示例请在使用asprintf后加密数据?

感谢...

2 个答案:

答案 0 :(得分:4)

AES是块加密。它一次只能在一个块上运行。一种可能性是只为输入中的每个16字节块调用一次。当你到达输入的末尾时,将最后一块填充到16个字节,并加密它。这称为“电子代码簿”(ECB)模式。它的缺点是,如果有两个(或更多)输入块相同,它们将产生相同的输出。在这种情况下,欧洲央行很少被推荐。

还有许多其他modes of operation可以避免这个问题。我的建议是寻找另一个已经实现它们的库(例如,我很确定beecrypt会这样做)。不幸的是,在不知道你在做什么的情况下,很难说哪个是最合适的,但是我通过在该页面上查看CBC和CFB作为一些合理的可能性来开始

答案 1 :(得分:0)

AES以16字节块加密。要加密多个数据块,您需要将其与modes of operation之一一起使用。我建议使用CBC mode。您还希望将zero-pad数据转换为16字节边界。