何时使用动态 AES 加密和固定密钥 AES 加密?

Posted

技术标签:

【中文标题】何时使用动态 AES 加密和固定密钥 AES 加密?【英文标题】:When to use on the fly AES encryption and fixed key AES encryption? 【发布时间】:2014-10-03 20:39:48 【问题描述】:

我正在 Contiki OS 研究 AES 安全性。我有 AES 库,它支持两种类型的加密/解密:

    在飞行中 固定键

on-the-fly 中,当我使用密钥加密数据时,会生成新密钥和加密数据。这个新生成的密钥用于解密数据。所以每次我执行 enc/dec 操作时,我的密钥都会改变。

fixed-key算法中,一个固定的密钥用于所有的enc/dec。

我很困惑,我应该选择哪种方法?我不知道这两种方法的优缺点。

【问题讨论】:

这是根据您的要求。一般会使用固定键。 需要更多信息。谁需要解密这些数据? 发送方在发送前对数据进行加密,接收方对数据进行解密。 【参考方案1】:

on-the-fly 与 fix-key 之间的区别在原始 Rijndael 提案第 4.3.2 节的注释部分中进行了解释。

"可以在不显式使用数组 W[Nb*(Nr+1)] 的情况下实现密钥调度。 对于 RAM 稀缺的实现,可以使用即时计算轮密钥 Nk 个单词的缓冲区,几乎没有计算开销。”

本质上,即时密钥调度将节省一些内存,因为您不需要存储整个扩展密钥,而是在每一轮中计算它。动态密钥调度的优势仅在非常小的微控制器或硬件实现中才真正重要。

缺点是解密速度较慢,因为在开始解密之前需要先扩展密钥。

【讨论】:

以上是关于何时使用动态 AES 加密和固定密钥 AES 加密?的主要内容,如果未能解决你的问题,请参考以下文章

AES加密算法256位密钥与128位密钥的不同是啥?

AES加解密使用总结

加密解密

AES加解密 对称加密

在 Android 和 iPhone 中使用 AES-128 加密(不同的结果)

python实现AES加密