.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");
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д