J'ai une ancienne fonction écrite en 2013 qui décrypte le xml crypté par un autre programme.EncryptedXml Erreur de méthode DecryptDocument après la mise à jour du framework .Net
Le code est simple, vraiment
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();
}
Il a travaillé comme un charme jusqu'à récemment que certains de nos clients ont commencé à améliorer leur cadre de 4.6.2, la méthode DecryptDocument() a cessé de fonctionner. Maintenant, il lance une exception "Le groupe d'algorithmes" est invalide ". Si je supprime .net framework 4.6.2 cela fonctionne à nouveau.
L'exemple de code dans ce link va reproduire l'erreur, il va crypter avec succès puis échouer à déchiffrer. J'utilise des certificats A3, jeton pendrive. Quelqu'un at-il fait face à ce problème? il y a un travail autour de .net 4.6.2?
Edit 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
Avez-vous une pile complète? –
Les clients ont-ils été complètement reconstruits? Demander au client de faire une copie du dossier bin dans le projet. Puis supprimez le dossier bin et recompilez. Je suspecte que l'erreur est due aux dépendances dans le compilateur. Le compilateur n'a aucune dépendance à la version Net, donc quand un nouveau Net est installé, une recompilation complète est requise. Le compilateur ne fera pas automatiquement une compilation complète. – jdweng
@jdweng Il échoue même sur ma machine de développement, j'ai commencé un nouveau projet, collé l'exemple de code de ce [lien] (https://msdn.microsoft.com/en-us/library/ms148633 (v = vs.110) .aspx). Il n'a pas réussi à déchiffrer. –