Skip to content

Latest commit

 

History

History
23 lines (14 loc) · 2.52 KB

README.md

File metadata and controls

23 lines (14 loc) · 2.52 KB

Ассиметричное шифрование с использованием криптосистемы RSA

Для реализации RSA требуются: рекомендации по выбору размеров блока данных и ключей, работа с числами большой разрядности, алгоритмы выработки простых чисел, нахождения наибольшего общего делителя, возведения числа в большую степень, работа с отрицательными числами.

Но C# предоставляет нам удобные классы и методы для решения задач криптографии. Чтобы получить доступ к данным классам, в директиву using необходимо добавить пространства имен System.Security.Cryptography и System.Security.Cryptography.Xml.

У класса RSACryptoServiceProvider есть метод ExportParameters, возвращающий структуру RSAParameters, которая содержит сведения ключа. Метод принимает логическое значение, указывающее, следует ли возвращать только сведения об открытом ключе или сведения как об открытом, так и о закрытом ключе. А также метод ImportParameters, значением структуры RSAParameters которого можно инициализировать класс.

Об алгоритме

Шифрование происходит с использованием:

  • private key
  • public key

Сторона A, осуществляющая асимметричное шифрование, использует открытый ключ, созданный другой стороной B. Так метод Encrypt принимает данные в виде строки и ключа для шифрования, а возвращает строку зашифрованных данных.

Полученные данные сторона B расшифровывает с помощью соответствующего (открытому ключу) закрытого ключа. Расшифровка осуществляется методом Decrypt, который принимает зашифрованную строку, а возвращает - исходную.