【发布时间】:2012-07-17 20:07:55
【问题描述】:
我需要为 .net 中的 AES 对称加密生成一个 256 位密钥。我还没有找到任何关于如何“从头开始”这样做的描述。我的意思是,我不打算将此密钥作为用户密码的基础。我只是想生成一个加密安全的密钥来使用。
据我所知,最好的选择就是使用 .net 类 RNGCryptoServiceProvider
这是生成加密安全密钥的最佳方法吗?
【问题讨论】:
-
另一条评论:通常多次使用或单次使用不太适用于密钥生成。它与您如何使用密钥有关。例如。如果您使用带有静态 IV 的 CBC 加密,则不应多次使用密钥。换句话说,键的属性是相同的,不同之处在于您如何处理它们。
-
(1) 稍微更改了语言以使其更清楚 (2) 通过“多次使用”我只是表示我将使用密钥进行具有多个 IV 的多重加密。所以我的印象是,这是恰当的术语。谢谢
-
多次使用当然是正确的术语,它只是对如何生成密钥没有影响。
-
你清楚静脉注射液的用途吗?在累积密码模式中,IV 仅用于初始块,然后后面的块使用加密该块的剩余部分。但是,如果您使用像信用卡这样的小值并且使用的是 256 位密钥,那么整个额外的随机化都来自 IV,并且使用只有一个块长的文本的流密码实际上并不比使用欧洲央行。
-
一个好的安全策略是让你的大部分密钥在请求之间保持相同。使用来自服务器注册表的值或代码库之外的其他值填充键值的一部分。考虑使用每个用户的 IV,和/或使用每个用户的值对基本密钥进行加盐(例如,将用户 ID 预先添加到密钥中)。 “来自服务器的东西”有助于如果有人获得您的数据库和您的代码,他们将无法解密您的字段。
标签: .net encryption cryptography key aes