.NET 4.x Подпись XML-файлы электронно-цифровой подписью - C#
Формулировка задачи:
Не по теме:
была конечно
слегка похожая
тема в разделе криптографии, но там без ответов, и там тогда планировал на делфи, надеюсь это не будет считаться кросспостингоместь папка в которой куча файлов, например, xml. Нужно их взять и подписать с помощью ЭЦП (пока планируется использование виндового х509 сертификата), потом пересохранить\переложить в другую папку.
Подскажите, пожалуйста,словами
с помощью чего бы Вы это делали и как? Заранее большое спасибо!Решение задачи: «.NET 4.x Подпись XML-файлы электронно-цифровой подписью»
textual
Листинг программы
using System; using System.Security.Cryptography.X509Certificates; using System.Security.Cryptography.Xml; using System.Xml; namespace x509certificate { class Program { static void Main() { //КОДИРУЕМ XmlDocument xml = new XmlDocument(); xml.PreserveWhitespace = true; xml.Load("1.xml"); //Выбираем узел для кодирования XmlElement el = xml.SelectSingleNode(@"//documents") as XmlElement; //Кодируем makecert -r -pe -n "CN=XML_ENC_TEST_CERT" -b 01/01/2005 -e 01/01/2020 -sky exchange -ss my X509Certificate2 cert = null; X509Store store = new X509Store(StoreLocation.CurrentUser); store.Open(OpenFlags.ReadOnly); foreach(X509Certificate2 c in store.Certificates) if(c.Subject == "CN=XML_ENC_TEST_CERT") { cert = c; break; } store.Close(); EncryptedXml eXml = new EncryptedXml(); EncryptedData edElement = eXml.Encrypt(el, cert); //заменяем узел на кодированный EncryptedXml.ReplaceElement(el, edElement, false); xml.Save("2.xml"); //ДЕКОДИРУЕМ xml.Load("2.xml"); eXml = new EncryptedXml(xml); eXml.DecryptDocument(); xml.Save("3.xml"); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д