【发布时间】:2012-12-17 16:38:17
【问题描述】:
寻找在 C 中加密字节数组的建议和一些参考代码。问题是我必须与其他例程一起适应 1KByte 内存,而 MCU 只有 8MHz。所以尺寸和速度是关键。我已经检查了 Rijndael,但它为我的 MCU 提供了巨大的表格。基本上我会在PC上加密intel hex格式,可能只有数据区,然后在MCU中解密。
使用动态内存分配例程是不可取的。
我的谷歌搜索将我带到了使用库的 C# 实现。
更新:
解密端约束:
RAM: 512 byte
MAX code size: 512-1024 words
CPU: 8 bit, 8MHz
【问题讨论】:
-
您想使用
XOR,更常用于多态恶意软件加密。这只是一个想法! -
@GrijeshChauhan : XOR 不是一种加密方法,除非您将其用作一次性密码。
-
表通常不是问题,只要它们包含常量。常量可以存储在持久内存(ROM、EEPROM、闪存)中,而不是 RAM。唯一需要存储在 RAM 中的部分是 state。密码学中没有“十六进制格式”之类的东西,只有二进制数据。十六进制(十进制)是在该二进制数据的字符中使用encoding 的表示。看起来像是在吹毛求疵,但如果你没有做到这一点,你会遇到麻烦。
-
@owlstead:我说的是Intel HEX format。我提到过,以防万一会有一些基于该数据格式的想法。该程序将从 Flash 的 Bootloader 区域运行,并对 Flash 芯片和 EEPROM 的其余部分进行编程。引导加载程序限制为 512-1024 个字。我没有其他地方可以存储这些表,因此这是一个问题。我非常了解十六进制表示和编码,谢谢。
-
好的,所以请确保您的问题包含持久性和暂时性内存限制。请在将数据存储到英特尔 HEX 编码文件之前对数据执行加密/解密 - 文件本身的格式应该无关紧要。
标签: c encryption cryptography embedded avr