.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());
}
2 つの質問があります。
1) ソースコードを読むことができる人がキーを取得できるため、ソースコードにキーを保持する慣行は良くないことを私は知っています。キーの保管場所と保管方法に関するベスト プラクティスはありますか?
2) キーが安全に保管されていることを念頭に置いて、上記のコードは実稼働環境にデプロイするのに十分安全ですか?