使用Pass Phrase或AesCryptoServiceProvider生成密钥?

时间:2014-04-25 08:56:21

标签: c# cryptography aescryptoserviceprovider

我们使用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;
  }

}

0 个答案:

没有答案