为对称数据加密导出多用密钥
问题描述:
我需要在.net中为AES对称加密生成一个256位密钥。我从来没有找到任何关于如何从头开始的说明。我的意思是,我不打算将此密钥从用户密码中删除。我只是想生成一个密码安全的密钥来使用。为对称数据加密导出多用密钥
最好的选择,因为据我所知,是简单地使用.NET类RNGCryptoServiceProvider
这是生成加密安全密钥的最佳方法?
答
“最佳方法”取决于您的确切要求。
如果您只需要32个随机字节,那么RNGCryptoServiceProvider就可以。您必须做出安排,确保密钥在您的目的地可用,通常使用RSA或其他非对称加密方法。如果您为存档目的而需要它,那么您需要一种安全存储它的方法。在您不再需要它之后,您还需要确保它被安全删除。
或者,您可以使用Key Derivation Function,同时考虑将传输,存储和删除应用于KDF参数。
另一种评论:通常多次使用或单次使用并不太适用于密钥生成。它有更多的事要做*你如何使用密钥。例如。如果您使用静态IV的CBC加密,则不应多次使用密钥。换句话说,键的属性是相同的,这就是你如何处理它们,从而带来不同。 – 2012-07-17 20:46:19
(1)通过“多次使用”改变了语言,使其更加清晰(2)我只是说我将使用密钥进行多重加密,并使用多个IV。所以我的印象是,这是适当的术语。谢谢 – crawfish 2012-07-17 21:02:17
许多用途当然是正确的术语,它只是没有什么区别应该如何生成密钥。 – 2012-07-17 21:08:34