.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");
 
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.889 из 5
Похожие ответы