gpt4 book ai didi

c - C 中的简单 AES 函数(不是库)?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:23:37 24 4
gpt4 key购买 nike

aes 新手。在读书http://en.wikipedia.org/wiki/AES_implementations ,我有点惊讶。我应该只需要一个功能

char16 *aes128(char16 key, char16 *secrets, int len);

其中char16是一个8*16=128bit的字符类型。并且,据推测,忽略内存泄漏,

assert( bcmp( anystring, aes128(anykey, aes128(anykey, anystring, len), len )==0 );

我正在查看维基百科上的算法描述,虽然我可以看到自己犯了足够多的编码错误,需要几天时间来调试我自己的实现,但它似乎并不太复杂。也许100行?我确实看到了 C# 中的版本,例如 Using AES encryption in C# .看起来它们本身几乎和算法本身一样长。早期关于 stackoverflow 的建议主要是建议在较大的库中使用单独的函数,但是如果有一个可以编译到自己的代码中的用于此任务的函数会很好。

那么,AES 实现是否过于复杂以至于胆小者难以接受?或者它是否相当简短?

C 实现需要多少行?是否有一个自包含的 aes128() C 函数已经以自由形式存在于某处以供使用?

另一个问题:每个 block 是否独立编码?据推测,如果第一个 block 创建第二个 block 将使用的盐,它将加强加密。 otoh,这意味着一个 block 的磁盘损坏将使每个后续 block 都无法解密。

/我是

最佳答案

您没有看到预期的单一功能,因为选项太多了。例如,您描述的 block 编码机制(CBC)只是AES加密中的一种选择或模式。有关详细信息,请参见此处:http://www.heliontech.com/aes_modes_basic.htm

任何语言的一般经验法则是:不要重新发明已经完成并做得很好的事情。在与密码学相关的任何事物中尤其如此。

关于c - C 中的简单 AES 函数(不是库)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24318229/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com