设置system.security.cryptography.aesmansmaned的键



当我在C#中实例化时,它已经具有.Key属性集。使用它安全吗?IE。它是否具有密码强的强度和足够随机,可以实现Aesman的每个新实例化(并且每次我在现有实例上称为.generekey())?

)?

我见过的所有示例,首先生成一个随机密码,然后使用键推导函数,例如rfc2898deriveBytes或passwordDeriveBytes来生成键(例如,如何使用'system.security.cryptography.cryptography.aesmanated.aesmanated'来加密'?)。这需要其他信息 - 例如盐值,密码迭代次数,要使用的哈希算法。

我知道,如果我希望用户提出密码,我需要所有这些。然后,我需要从它们中产生随机的密码强键。但是,如果所有内容都是由计算机生成的,那么我需要编程地生成随机密码,然后从它们中键生成,还是可以使用任何内容。

是的,如果愿意,可以使用默认键和IV值。您也可以通过以下方式明确地重新生成一个新的随机随机。

symmeticalgorithm.generekey()或symmeticalgorithm.createencryptor(null,null)

这取决于您要保护的内容以及您需要支持的信息所有者。如果速度/音量没关系,那么您仍然最好使用RFC2898DeriveBytes进行迭代。

无论如何,您不想在多个用户/租户/安全性"领域"中共享密钥,但是确保可以将默认键用于单个应用程序。如果这样做,将盐混合在一起。

我们使用用户定义的密码和盐的原因是避免攻击用户之间的常见/弱密码或共享密码,并确保作为应用程序所有者不知道其密钥。

我们使用PBKDF2(带有许多迭代的推导)的原因是减慢攻击者。罚款我们每位用户支付1次的费用。

如果您的需求只是为单个应用程序或系统具有随机键,则默认值可用,假设它当然可以提供您需要的力量。

最新更新