ОБНОВЛЕНИЕ
Я вижу, что многие люди находят мой вопрос слишком длинным (потому что есть много объяснений), читают первое предложение, а затем просто думают, что я иду в худшем случае, не видявесь вопрос. Если вопрос недостаточно ясен, пожалуйста, дайте мне знать. Я пытаюсь сжать это самым простым способом и не вызвать путаницы.
Причина расшифровки открытого ключа заключается в достижении формы цифровой подписи, при которой получатель дешифрует зашифрованный контент, чтобы выявить хешстоимость. Я не видел необходимости упоминать это в вопросе, поскольку хотел выяснить, как выполнить эту операцию в ее базовой форме. Однако, чтобы избежать дальнейших опасений и предупреждений о том, что такое RSA и дешифрование открытого ключа, я обновил свой вопрос этим отказом от ответственности.
ПРЕДПОСЫЛКИ
Я написалПриложение C #, которое использует библиотеку RSA Chilkat для получения содержимого и шифрования его с помощью личного закрытого ключа.
Затем я хотел бы использовать общедоступный веб-сайт, чтобы позволить кому-то дешифровать этот самый контент (который зашифрован) с помощьюсвязанный открытый ключ.
Теперь я нашел сторонний веб-сайт (и многие из них , а не , кстати), который позволяет дешифровать контент с помощью открытого ключа RSA (https://www.devglan.com/online-tools/rsa-encryption-decryption).
К сожалению, когда я пытаюсь его использовать, я получаю «Ошибка дешифрования».
Вот пример установки. Я сгенерировал свои собственные пары личного и закрытого ключей. В моем C #приложение, я беру строку и шифрую ее с помощью закрытого ключа и кодирую ее с использованием Base64.
const string originalContent = "This !s original c0nt3nt";
var rsa = new Chilkat.Rsa();
rsa.GenerateKey(2048);
var encryptedBytes = rsa.EncryptBytes(Encoding.UTF8.GetBytes(originalContent), true);
var encryptedEncodedString = Convert.ToBase64String(encryptedBytes);
Console.WriteLine($"Encrypted:{Environment.NewLine}{encryptedEncodedString}");
Console.WriteLine();
var privateKeyBytes = rsa.ExportPrivateKeyObj().GetPkcs8();
var privateKeyEncodedString = Convert.ToBase64String(privateKeyBytes);
Console.WriteLine($"Private Key:{Environment.NewLine}{privateKeyEncodedString}");
Console.WriteLine();
var publicKeyBytes = rsa.ExportPublicKeyObj().GetDer(false);
var publicKeyEncodedString = Convert.ToBase64String(publicKeyBytes);
Console.WriteLine($"Public Key:{Environment.NewLine}{publicKeyEncodedString}");
Console.WriteLine();
var decyptedContentBytes = rsa.DecryptBytes(encryptedBytes, false);
var decryptedContentString = Encoding.UTF8.GetString(decyptedContentBytes);
Console.WriteLine($"Decrypted:{Environment.NewLine}{decryptedContentString}");
Console.WriteLine();
Console.WriteLine("Press ENTER to quit");
Console.ReadLine();
Этот пример консольного приложения выписает все необходимыеSary информацию, необходимую для использования в следующей части процесса и продемонстрировать, что в принципе он работает как ожидалось.
Пример: ![Console output](https://i.stack.imgur.com/r2wze.png)
Вот примерзначения из окна консоли:
Зашифрованное содержимое
H5JTsGhune1n3WWSPjwVJuUwp70Hsh1Ojaa0NFCVyq0qMjVPMxnknexOG/+HZDrIYsZM7EnPulpmihJk4QyLM8T2KNQIhbWuMHvzgHYlcPJdXpGZhAxwfklL4HP0iRUUXJBsJcS/2XoUDZ6elUoMIFY9cDB4O+WFxKS/5vzLEukTLbQ3aEBNg3xaf9fg12F8LcMxZ3GDsk0W9b6oJci09NTxXd6KKes0RM1hnOhw6bu0U33ZLF3sa0nH9Kdf8w23PoKc/tl12Jsa8N1A4OjaT5910UF8FRH6OkAbNKnxqXcL7+V4HVuHchi3ghuFivAW57boLeHr7OG7wOEC/gfPOw==
PRIVATE KEY
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC8xYcNXckXf1X4Kd6qE5c7pddfWdKo71mcwZWskuaq+wq3FTcCTAedo/Vcx8Vxn+RMn5XE7QCDzcAAN0K/BzQsoU81myRzZ+bKP+TJ5HH0jClCUMj+ideEm0fay873jnbG0hKEOJPVxPWwKq3jvDLLmWrdgvd/UiDStDm286SFKfMlLWkSw8YIc5nXsthAgP0hv8Nj7UDKvTEG5o3boTuhG1JQARCEXP0fTdIiv0cEFlSN3KkgF4KDf32Vt2x57N/+PJXpQvcECkLwPpBAq/aM0qbtgeiILxavfBJRwQ5zXDUmZHepvSjK6KIYQsTavQQLDXnFKuXa2fxOJHIlys6pAgMBAAECggEBAI0ZMBtDkL2phj7aPP7vaclB6rvwzc9MKLVM1W2K2DPRNW8nwlhLMB4aoZnaELEfjGvhlPb/F7VtIyiGJbPX1J3PbP9qmVJRxWZDX+WwhaT+5xAUhkgMDDWoQ4s9b9QGfq2Z9BE0oPvWHraxEAz7bRRV9lTgQdK/Np2H7OPdNYn6SW8qVgAukgTBqVno4VDbC34bJwal0e63oBFFfensWlhPtDUQB/uQX7UiRfEkxL+CNuqVLDoAeXWmSVWOPlDTKVu1y1bzfA+WMOKHm1ndq21I07TUPf9FcgYdKf4yKpWvMfVeDev6Oo/2mlac+vrJO571S+h4a5m79jUhCeJwX4kCgYEA7q5hrNtMbErA6dgEOG+KpFTaeqbknwtcykVApEvHt4LKULedAvwkORu65acKFYkxbMt19Fx7ligGxg0yOQRWX1BXK1XOCo9eYOjvOVlbRqBywLIbegehoZQ0LoSsdRcOvFq7EbMV3BaxCmxgpnrCZ75VaCYUMzylIduPWKeT9xcCgYEAyngNIIgsXfpCI+HHILNpprFfS2JBBGPx8N/d9cXahKCJhxrMe8K64CSMyxTwum5DXjJnbE4QBsoowRZTCEF6JUBagRM/pQrVX/CK//oyUUaa5+1S/0OxlUevXR7TD6gcpGNEdPjruc+gZzhfKFuWh+V9mJQUviqm3RjAcEdHAD8CgYBL0kOfGM8vO5QK9R9qGiztxTLecbQAvihM7TD6wEQCjN7eQ2Xyc8zCA4gcujKe4sU7rWqcJODxs2drdPe2WyVhA/GdB5X7js3JdVXBXxx61C9//VRzMIds/9qPyH/MdnWs6hmxJrXUA7Vb/U+6sxacxD73ZdlW6XX/ynLAFAQSIwKBgQCk4i12j87p3ZMdW5HprJJeoNYFMwfVxnrSec1tiGoTVhWJxCZAp22+eaV7ARumB4OvY4bcKZpdnSahUEfgUkphqc3Kjd1nz7HCxsa7/YoarFAcjiXoIb2t30oNoLurZXGl4f1u8QQvNsnfJYZA/I1TMG4e4oEd+OgY6D5XcYR9ywKBgGdaZmoBieiw0NkbijjgQZ0WILDmrIYdsSp4HMp6XDeVvdMb/qYg2jTnvVyqMSb8NdfCOB0GT19r1isQX9RnUgxPikJbVLj8WjAQjHT28mtmRn+Ju/3KT75RJ/LHY3SySNMOgTW75X2u8v0ELdEiiOmc/vTkCYoS/oqp92ELjT1Y
PUBLICКЛЮЧ
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvMWHDV3JF39V+CneqhOXO6XXX1nSqO9ZnMGVrJLmqvsKtxU3AkwHnaP1XMfFcZ/kTJ+VxO0Ag83AADdCvwc0LKFPNZskc2fmyj/kyeRx9IwpQlDI/onXhJtH2svO9452xtIShDiT1cT1sCqt47wyy5lq3YL3f1Ig0rQ5tvOkhSnzJS1pEsPGCHOZ17LYQID9Ib/DY+1Ayr0xBuaN26E7oRtSUAEQhFz9H03SIr9HBBZUjdypIBeCg399lbdseezf/jyV6UL3BApC8D6QQKv2jNKm7YHoiC8Wr3wSUcEOc1w1JmR3qb0oyuiiGELE2r0ECw15xSrl2tn8TiRyJcrOqQIDAQAB
ПУТЬ РАЗРЕШЕНИЯ НА ПУБЛИЧНЫЙ КЛЮЧ ВЕБ-САЙТА
Теперь, когда я захожу на сайт (упомянутый выше), я вставляю зашифрованный контент в зашифрованный текст контентаblock, и я вставляю свой открытый ключ, сгенерированный в текстовом блоке под ним, и устанавливаю тип ключа RSA на Public Key
. Но это не удается.
![My attempt to let the website decrypt my encrypted content](https://i.stack.imgur.com/uJjXR.png)
ВТОРАЯ ПОПЫТКА
Но ...
Я сделал несколькоустранение неполадок путем получения моих личных и открытых ключей, которые я сгенерировал, и я использую веб-сайт для выполнения шифрования и дешифрования с моими ключами, и я могу зашифровать мою строку и успешно расшифровать этот зашифрованный контент, что заставляет меня поверить, что каким-то образом мой ChilkatНастройка шифрования не полностью совпадает с настройкой, используемой на сайте.
![Have the website test to make sure my keys are working by encrypting and decrypting content](https://i.stack.imgur.com/KiwPu.png)
ЧТО Я ЗАМЕЧАЛ
Итак, я началчитая то, что должен был предложить веб-сайт, и автор страницы опубликовал объяснение того, как этого добиться (https://www.devglan.com/java8/rsa-encryption-decryption-java), который использует библиотеки Java RSA под капотом. По-видимому, есть два шифра Java RSA, которые можно использовать«RSA» и «RSA / ECB / PKCS1Padding».
Я не очень знаком с библиотеками Java и знаю достаточно криптографии, чтобы знать, как добиться цели, но есть много технических аспектовМне все еще неясно, как помочь мне понять, куда идти дальше.
ВОПРОС
Мой вопрос, есть ли в Chilkat что-то, что мне нужно настроить так, чтобыон может зашифровать контент, который позволил бы дешифровать приложение Java (например, ссылку на сайт, размещенную выше)? (конечно, Chilkat тоже должен уметь его расшифровывать)