密码学 - RijndaelManaged算法的安全性以及存储密钥的位置

时间:2013-04-18 17:22:00

标签: c# encryption cryptography key rijndaelmanaged

我有以下代码使用.NET中的RijndaelManaged加密和解密数据。

public string EncryptString(string ClearText)
{
    byte[] clearTextBytes = Encoding.UTF8.GetBytes(ClearText);
    SymmetricAlgorithm rijn = SymmetricAlgorithm.Create();

    MemoryStream ms = new MemoryStream();
    byte[] rgbIV = Encoding.ASCII.GetBytes("xhxqtbaoxhvchptd");
    byte[] key = Encoding.ASCII.GetBytes("ajyvccpeycjeauyncgdiohssyvusdknj");

    CryptoStream cs = new CryptoStream(ms, rijn.CreateEncryptor(key, rgbIV), CryptoStreamMode.Write);
    cs.Write(clearTextBytes, 0, clearTextBytes.Length);
    cs.Close();

    return Convert.ToBase64String(ms.ToArray());
}

public string DecryptString(string EncryptedText)
{
    byte[] encryptedTextBytes = Convert.FromBase64String(EncryptedText);
    SymmetricAlgorithm rijn = SymmetricAlgorithm.Create();

    MemoryStream ms = new MemoryStream();
    byte[] rgbIV = Encoding.ASCII.GetBytes("xhxqtbaoxhvchptd");
    byte[] key = Encoding.ASCII.GetBytes("ajyvccpeycjeauyncgdiohssyvusdknj");

    CryptoStream cs = new CryptoStream(ms, rijn.CreateDecryptor(key, rgbIV), CryptoStreamMode.Write);
    cs.Write(encryptedTextBytes, 0, encryptedTextBytes.Length);
    cs.Close();

    return Encoding.UTF8.GetString(ms.ToArray());
}

我有两个问题:

1)我知道将密钥保存在源代码中的做法并不好,因为能够阅读源代码的人可以获得密钥。关于在何处以及如何存储密钥,是否有一些最佳实践?

2)上面的代码是否足够安全,可以部署在生产环境中,还要记住密钥是否安全存储?

0 个答案:

没有答案