我需要为 .net 中的 AES 对称加密生成一个 256 位密钥。我还没有找到任何关于如何“从头开始”这样做的描述。我的意思是,我不打算将此密钥作为用户密码的基础。我只是想生成一个加密安全的密钥来使用。
据我所知,最好的选择就是使用 .net 类RNGCryptoServiceProvider
这是生成加密安全密钥的最佳方法吗?
我需要为 .net 中的 AES 对称加密生成一个 256 位密钥。我还没有找到任何关于如何“从头开始”这样做的描述。我的意思是,我不打算将此密钥作为用户密码的基础。我只是想生成一个加密安全的密钥来使用。
据我所知,最好的选择就是使用 .net 类RNGCryptoServiceProvider
这是生成加密安全密钥的最佳方法吗?
“最佳方法”取决于您的确切要求。
如果您只需要 32 个随机字节,那么 RNGCryptoServiceProvider 就可以了。您必须做出安排以确保密钥在您的目的地可用,通常使用 RSA 或其他一些非对称加密方法。如果您需要它用于存档目的,那么您将需要一种安全存储它的方法。您还需要确保在不再需要后将其安全删除。
或者,您可以使用密钥派生函数,将传输、存储和删除的相同考虑应用于 KDF 参数。