Winodws 7, 8 및 10에서 정상적으로 작동하는 Windows 응용 프로그램 (x64)이 있습니다. 오늘은 Windows 2012 서버에서 프로그램을 실행하지 못했습니다. 이벤트 로그를 살펴보면 System.Security.Cryptography.RijndaelManaged..ctor()
에서 발생한 오류가 발견되었습니다 (불행히도 로그를 통해 전체 경로가 제공되지는 않았습니다).Windows Server 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 프레임 워크 버전 : 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() () (AT System.TypeInitializationException)는
새로운 서버는 .NET 프레임 워크의 동일한 버전이있다.
블록 크기를 변경하지 않으므로 새로운 RijndaelManaged()를 Aes.Create()로 바꿔야합니다. 동일한 출력을 생성하지만 FIPS 예외는 없습니다. – bartonjs