У меня есть старая функция, написанная в 2013 году, которая расшифровывает xml, который был зашифрован другой программой.
Код очень простой
public static void Decrypt(XmlDocument Doc)
{
// Check the arguments.
if (Doc == null)
throw new ArgumentNullException("Doc");
// Create a new EncryptedXml object.
EncryptedXml exml = new EncryptedXml(Doc);
// Decrypt the XML document.
exml.DecryptDocument();
}
До недавнего времени он работал как шарм, что некоторые из наших клиентов начали обновлять свою структуру до 4.6.2, поэтому метод DecryptDocument() перестает работать. Теперь он выдает исключение "Группа алгоритмов" недействительна ". Если я удалю .NET Framework 4.6.2, он снова работает.
Пример кода в этой ссылке будет воспроизводить ошибку, он будет успешно зашифрован, а затем не сможет расшифровать.
Я использую сертификаты A3, токен pendrive. Кто-нибудь столкнулся с этой проблемой? есть какая-нибудь работа в .net 4.6.2?
Изменить 1:
StackTrace:
at System.Security.Cryptography.CngAlgorithmGroup..ctor(String algorithmGroup)
at System.Security.Cryptography.CngKey.get_AlgorithmGroup()
at System.Security.Cryptography.RSACng..ctor(CngKey key)
at System.Security.Cryptography.X509Certificates.RSACertificateExtensions.GetRSAPrivateKey(X509Certificate2 certificate)
at System.Security.Cryptography.CngLightup.GetRSAPrivateKey(X509Certificate2 cert)
at System.Security.Cryptography.Xml.EncryptedXml.DecryptEncryptedKey(EncryptedKey encryptedKey)
at System.Security.Cryptography.Xml.EncryptedXml.GetDecryptionKey(EncryptedData encryptedData, String symmetricAlgorithmUri)
at System.Security.Cryptography.Xml.EncryptedXml.DecryptDocument()
at Criptografar.Program.Decrypt(XmlDocument Doc) in C:\Users\leoka\Documents\Visual Studio 2017\Projects\ConsoleApp4\Criptografar\Program.cs:line 152
at Criptografar.Program.Main(String[] args) in C:\Users\leoka\Documents\Visual Studio 2017\Projects\ConsoleApp4\Criptografar\Program.cs:line 83