Криптография - Безопасность алгоритма RijndaelManaged и где хранить ключи

У меня есть следующий код для шифрования и дешифрования данных с помощью RijndaelManaged в.NET.

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 ответов

Другие вопросы по тегам