Windowsアプリケーション(x64)がWinodws 7,8、および10で正常に動作しています。今日はWindows 2012サーバーでプログラムを実行できませんでした。イベントログを見ると、System.Security.Cryptography.RijndaelManaged..ctor()
に由来するエラーが見つかりました(残念ながら、ログは完全なパスを与えませんでした)。Windowsサーバー2012でRijndael暗号化が動作しません
私は、自分のプログラム内の機密データを暗号化するためにRijndaelアルゴリズムを使用しています。プログラムが最初に行うことは、すべての設定を取得するために、暗号化された設定ファイルを取得して解読することです。そして、これは私のプログラムが始まらない場所です。
これは私のプログラムで復号化方法である:
public static string Decrypt(string cipherText, string passPhrase)
{
byte[] cipherTextBytes = Convert.FromBase64String(cipherText);
using (PasswordDeriveBytes password = new PasswordDeriveBytes(passPhrase, null))
{
byte[] keyBytes = password.GetBytes(keysize/8);
using (RijndaelManaged symmetricKey = new RijndaelManaged())
{
symmetricKey.Mode = CipherMode.CBC;
using (ICryptoTransform decryptor = symmetricKey.CreateDecryptor(keyBytes, initVectorBytes))
{
using (MemoryStream memoryStream = new MemoryStream(cipherTextBytes))
{
using (CryptoStream cryptoStream = new CryptoStream(memoryStream, decryptor, CryptoStreamMode.Read))
{
byte[] plainTextBytes = new byte[cipherTextBytes.Length];
int decryptedByteCount = cryptoStream.Read(plainTextBytes, 0, plainTextBytes.Length);
return Encoding.UTF8.GetString(plainTextBytes, 0, decryptedByteCount);
}
}
}
}
}
}
そして、これは私がログに取得するエラーメッセージです:
アプリケーション:Postbag.exe Frameworkのバージョン:v4.0.30319説明: 未処理の例外が原因でプロセスが終了しました。例外 のSystem.InvalidOperationException のSystem.Security.Cryptography.RijndaelManaged..ctor() のCommon.StringCipher.Decrypt(System.String、System.String)Common.Conf..cctor()例外の情報: Postbag.Program.MainでPostbag.FormMain..ctorでCommon.Conf.get_DataProviderで System.TypeInitializationException() ()()
新しいサーバはまた、.NET Frameworkの同じバージョンを有します。
ブロックサイズを変更していないので、 'new RijndaelManaged()'を 'Aes.Create()'に置き換えるだけです。同じ出力が生成されますが、FIPS例外はありません。 – bartonjs