我在C中寻找一个良好的许可许可(BSD / MIT或PD)DES实现,具有最小的运行时内存使用量(即最小量的读写内存,并且最好也是小代码/表大小)。速度不是问题;事实上,在某些方面,速度越慢越好,因为它提供了一些针对暴力登录尝试的自然防御。
我见过的所有传统实现都做了大型表的延迟/运行时初始化,这正是我想要避免的。我很乐意在二进制数据中包含static const
数据中的表格,事实上这是我已经部分攻击了我现在所拥有的实现,但我想知道是否有任何实现现有的实现,以牺牲性能为代价,最大限度地减小表的大小,使二进制文件不那么大(约50kb的表)。
注意:是的,DES很糟糕。预期用例是用于实现处理传统密码登录的crypt
函数。
答案 0 :(得分:3)
MIT license的示例和libtomcrypt的版本完全免费。
第一个版本似乎也对表进行了延迟初始化,而它们在libtomcrypt中是静态的。但libtomcrypt似乎给你一个速度与大小的汇编标志,在较大的表前面有一个#ifndef LTC_SMALL_CODE
,也许这可以解决你的问题?
答案 1 :(得分:0)
source code section from Applied Cryptography链接到大量的DES实现 - 我没有看过它们,但很有可能它们中至少有一个满足您的需求。