1

我在 WCF 项目中实现 AES GCM 加密。在阅读和搜索后,我找到了这个例子(第一堂课,AESGCM),它看起来写得很好,更新得很好。

据我了解,nonce 将尽可能独特是非常重要的,并且希望确保我理解这个类的工作方式。

当我过去在 CBC 模式下使用 IV 时,有必要将其保存以供将来解密,但在随附的示例中,我看到 IV(随机数)没有保存。

我的问题是密文的随机数部分是否使用以下方法提取:

cipherReader.ReadBytes(NonceBitSize / 8)

还是我遗漏了什么,应该保存 IV/nonce?

另外 - GCM 不需要使用盐吗?

4

1 回答 1

1

在链接的代码段中,随机数被附加到密文中。因此是可以恢复的。丢失 nonce 意味着丢失数据。

在评论中,我看到了一个危险的想法:不以加密安全的方式生成随机数。这不是一个好主意,因为那样会冒着碰撞随机数的风险。它不必要地削弱了安全性。

于 2014-04-01T12:50:06.410 回答