我使用了一个不错的公共领域 C++ DES 实现 以前,但现在我需要一些用于嵌入式系统的简单、基本、快速的加密技术。

它不需要是牢不可破的,但它确实需要阻止偶然的黑客(即,没有任何东西可以用于金钱或身份盗窃,但存储卡上传输的其他个人信息可能会丢失或落入坏人之手)。

由于该处理器上的内存有限,我更喜欢能够以离散块(512 字节或更少)进行编码的东西。

该项目不是开源的,并且不会使用库,我知道这进一步限制了选项 - 公共域是最好的,但 BSD/apache/etc 可能可以接受......

我很犹豫是否要自己推出(每个人都应该如此)。

-亚当

有帮助吗?

解决方案

如果您只是寻求混淆,那么使用秘密常量进行异或是您会发现的一个很小的实现。它也很容易被破解,因为它很容易受到频率分析来寻找最常见的英文字母。

如果您需要更强大的算法,我建议您查看河豚,它往往体积小且速度快。它仍然需要表的内存,但希望它适用于您的应用程序。

Bruce Schneier 明确将 Blowfish 算法置于公共领域,否认专利。您可以从以下位置获得他的 C 实现(以及其他实现) 他的网站. 。该来源不带有版权声明。我怀疑源代码也属于公共领域,但可能需要进行更多检查。

其他提示

RC4 简单快捷。

发布 C++ DES 实现的同一个人还发布了 C Rijndael 加密算法 - 我应该多浏览一下他的网站, 微小的加密算法 (学术论文在这里)还具有非常小的 C 实现占用空间。

河豚 看起来不错,并且就安全性而言可能是这三者中最好的。

我将从 TEA(小代码和内存占用)开始,但将其包装起来,以便稍后在需要时可以转向另一种算法。它在早期的实现中存在明显的弱点,但对于这个项目来说甚至可能是矫枉过正。

-亚当

你可以使用 伪随机数生成器 (PRNG) 生成可重复的单词序列,然后将其与数据流中的相应单词进行异或。(发送器和接收器需要提前知道用于生成伪随机序列的参数。)

这种方法并非牢不可破,但它比使用常量进行异或运算有了进步,而且 PRNG 的实现非常简单,通常由每个单词的一次乘法和模运算组成。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top