我们使用AES加密来加密数据。使用某个应用程序(即控制台)在一年内生成一次密钥,以便我必须选择生成密钥?
1。我们是否需要使用Pass Phrase方法生成密钥?
2。或者我们必须选择AESCryptoServiceProvider提供的默认生成密钥?
以下方法使用Pass Phrase生成加密。
方法1:
private static readonly byte[] Salt = new byte[] { 10, 20, 30, 40, 50, 60, 70, 80 };
private static byte[] CreateKey(string password, int keyBytes = 32)
{
const int Iterations = 300;
var keyGenerator = new Rfc2898DeriveBytes(password, Salt, Iterations);
return Convert.FromBase64String(keyGenerator.GetBytes(keyBytes));
}
以下方法使用AesCryptoServiceProvider
生成密钥,我们没有使用密码短语
方法2:
var Key = default(string);
using (var provider = new AesCryptoServiceProvider())
{
provider.GenerateKey();
Key = System.Text.Encoding.ASCII.GetString(provider.Key);
}
编辑:
我们可以使用这种随机数生成方法吗?
public static byte[] RandomNumberGenerator()
{
var rngBytes = new byte[32];
using (RandomNumberGenerator objNumberGenerator = new RNGCryptoServiceProvider())
{
objNumberGenerator.GetBytes(rngBytes);
return rngBytes;
}
}