Вынужден переводить кусок кода с JS на C#, и наткнулся там на такой вот момент:
var decrypt = new JSEncrypt();
decrypt.setPrivateKey("Здесь Base64-строка, представляющая приватный ключ");
var result = decrypt.decrypt("Здесь Base64-строка, представляющая зашифрованный текст");
И что-то никак не могу найти чего-то настолько же компактного в родном .NET
: все стандартные инструменты просят ключ в xml
-формате, для создания которого требуется вытянуть из строки ключа определенные данные (modulus
, exponent
etc)...
В общем, вопрос таков: какие инструменты можно использовать, чтобы расшифровать текст по приватному ключу в Base64
-формате?
Собственно, помогла мне следующая чудесная библиотека - 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));
}
Надеюсь, кому-нибудь сие тоже когда-нибудь пригодится)
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Если вы посмотрите на файл формы или файл окна (winforms в WFP) там вы можете увидеть, что файл содержит вложенные файлыВозможно ли сделать что-то...
Как можно сделать чтоб от xp до win10 можно было работать с программой в которой есть sql база данных
В C++ CLR WCF клиенте на выходе получается формат отличный от аналогичного C# WCF клиентаВот собственно дампы что они шлют: