Расшифрвока по приватному ключу / Аналог JSEncrypt для C#

142
07 октября 2019, 15:50

Вынужден переводить кусок кода с JS на C#, и наткнулся там на такой вот момент:

var decrypt = new JSEncrypt();
decrypt.setPrivateKey("Здесь Base64-строка, представляющая приватный ключ");
var result = decrypt.decrypt("Здесь Base64-строка, представляющая зашифрованный текст");

И что-то никак не могу найти чего-то настолько же компактного в родном .NET: все стандартные инструменты просят ключ в xml-формате, для создания которого требуется вытянуть из строки ключа определенные данные (modulus, exponent etc)...

В общем, вопрос таков: какие инструменты можно использовать, чтобы расшифровать текст по приватному ключу в Base64-формате?

Answer 1

Собственно, помогла мне следующая чудесная библиотека - BouncyCastle

Код вышел довольно простой и короткий:

private static string DecryptText(string Base64Text, string PrivateKey, Encoding Encoding)
{
    AsymmetricCipherKeyPair keyPair;
    using (StringReader reader = new StringReader($"-----BEGIN RSA PRIVATE KEY-----\r\n{PrivateKey}\r\n-----END RSA PRIVATE KEY-----")) // file containing RSA PKCS1 private key
        keyPair = (AsymmetricCipherKeyPair)new PemReader(reader).ReadObject();
    Pkcs1Encoding decryptEngine = new Pkcs1Encoding(new RsaEngine());
    decryptEngine.Init(false, keyPair.Private);
    byte[] bytes = Convert.FromBase64String(Base64Text);
    return Encoding.GetString(decryptEngine.ProcessBlock(bytes, 0, bytes.Length));
}

Надеюсь, кому-нибудь сие тоже когда-нибудь пригодится)

READ ALSO
WinForms и Wpf Файлы вложенные в файл окна

WinForms и Wpf Файлы вложенные в файл окна

Если вы посмотрите на файл формы или файл окна (winforms в WFP) там вы можете увидеть, что файл содержит вложенные файлыВозможно ли сделать что-то...

167
C# Портативность на разные версии windows

C# Портативность на разные версии windows

Как можно сделать чтоб от xp до win10 можно было работать с программой в которой есть sql база данных

148
C++ CLR WCF client - ошибка формата SOAP XML данных

C++ CLR WCF client - ошибка формата SOAP XML данных

В C++ CLR WCF клиенте на выходе получается формат отличный от аналогичного C# WCF клиентаВот собственно дампы что они шлют:

147
Как преобразовать HtmlCollection в List?

Как преобразовать HtmlCollection в List?

В WebBrowser запускаю js-скрипт

108