.NET 4.x Подпись XML-файлы электронно-цифровой подписью - C#

Узнай цену своей работы

Формулировка задачи:

Не по теме:

была конечно

слегка похожая

тема в разделе криптографии, но там без ответов, и там тогда планировал на делфи, надеюсь это не будет считаться кросспостингом

Здравствуйте, такая задача:
есть папка в которой куча файлов, например, xml. Нужно их взять и подписать с помощью ЭЦП (пока планируется использование виндового х509 сертификата), потом пересохранить\переложить в другую папку.
Подскажите, пожалуйста,

словами

с помощью чего бы Вы это делали и как? Заранее большое спасибо!

Решение задачи: «.NET 4.x Подпись XML-файлы электронно-цифровой подписью»

textual
Листинг программы
  1. using System;
  2. using System.Security.Cryptography.X509Certificates;
  3. using System.Security.Cryptography.Xml;
  4. using System.Xml;
  5.  
  6. namespace x509certificate {
  7.     class Program {
  8.         static void Main() {
  9.             //КОДИРУЕМ
  10.             XmlDocument xml = new XmlDocument();
  11.             xml.PreserveWhitespace = true;
  12.             xml.Load("1.xml");
  13.            
  14.             //Выбираем узел для кодирования
  15.             XmlElement el = xml.SelectSingleNode(@"//documents") as XmlElement;
  16.             //Кодируем makecert -r -pe -n "CN=XML_ENC_TEST_CERT" -b 01/01/2005 -e 01/01/2020 -sky exchange -ss my            
  17.             X509Certificate2 cert = null;
  18.             X509Store store = new X509Store(StoreLocation.CurrentUser);
  19.             store.Open(OpenFlags.ReadOnly);
  20.             foreach(X509Certificate2 c in store.Certificates)
  21.                 if(c.Subject == "CN=XML_ENC_TEST_CERT") {
  22.                     cert = c;
  23.                     break;
  24.                 }
  25.             store.Close();
  26.             EncryptedXml eXml = new EncryptedXml();
  27.             EncryptedData edElement = eXml.Encrypt(el, cert);
  28.             //заменяем узел на кодированный
  29.             EncryptedXml.ReplaceElement(el, edElement, false);
  30.            
  31.             xml.Save("2.xml");            
  32.  
  33.             //ДЕКОДИРУЕМ
  34.             xml.Load("2.xml");
  35.             eXml = new EncryptedXml(xml);
  36.             eXml.DecryptDocument();
  37.             xml.Save("3.xml");
  38.  
  39.         }
  40.     }
  41. }

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


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

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

9   голосов , оценка 3.889 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы