В двух словах, это моя проблема:
private string publicKeyString = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDVGUzbydMZS+fnkGTsUkDKEyFOGwghR234d5GjPnMIC0RFtXtw2tdcNM8I9Qk+h6fnPHiA7r27iHBfdxTP3oegQJWpbY2RMwSmOs02eQqpKx4QtIjWqkKk2Gmck5cll9GCoI8AUAA5e0D02T0ZgINDmo5yGPhGAAmqYrm8YiupwQIDAQAB";
/* Some transformation required, using publicKeyString to initiate a new RSACryptoServiceProvider object
*/
//for now:
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
byte[] selfComputedHash = new byte[]; //left out of the example
byte[] signature = new byte[];
bool result = rsa.VerifyHash(selfComputedHash, CryptoConfig.MapNameToOID("SHA1"), signature);
Как видите, проблема заключается в инициировании нового RSACryptoServiceProvider с заданной строкой открытого ключа в кодировке Base64. Мне удалось создать экземпляр с использованием объекта RSAParameters, загруженного с помощью byte[] для модуля и экспоненты, полученных из этой строки открытого ключа, с помощью команды оболочки OpenSSL. Но поскольку этот открытый ключ может измениться в будущем, я хочу иметь возможность хранить его в исходной форме в базе данных. Должен быть более простой способ справиться с этой проблемой.
Многие примеры, которые я прочитал до сих пор, позволяют избежать этой проблемы за счет экспорта и импорта сгенерированных частных и общедоступных ключи к объекту-контейнеру ключей и обратно и использовать его в одном и том же фрагменте кода и, таким образом, не «переносить» ключ в некоторой строковой форме из памяти. Некоторые люди выражали одну и ту же проблему как здесь, на StackOverflow, так и на других сайтах, но мне пока не удалось найти удовлетворительного ответа.
Любая идея более чем добро пожаловать.
Справочная информация:
Мой партнер по связи вычисляет 20-байтовый SHA1-хэш из входной строки переменной длины, состоящей из информации, содержащейся в нескольких поля сообщения в кодировке ASCII. Затем этот хэш подписывается RSA с использованием закрытого ключа моего партнера и отправляется мне вместе с сообщением ASCII. По прибытии я сам вычисляю хеш SHA1, используя те же поля из сообщения ASCII, а затем пытаюсь проверить, не были ли эти поля изменены, с помощью вызова VerifyHash.
Ключ предоставляется в двух формах: обычной и noNL. Версия noNL включена в приведенный выше код, обычная версия такая:
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDVGUzbydMZS+fnkGTsUkDKEyFO
GwghR234d5GjPnMIC0RFtXtw2tdcNM8I9Qk+h6fnPHiA7r27iHBfdxTP3oegQJWp
bY2RMwSmOs02eQqpKx4QtIjWqkKk2Gmck5cll9GCoI8AUAA5e0D02T0ZgINDmo5y
GPhGAAmqYrm8YiupwQIDAQAB
-----END PUBLIC KEY-----
Подробнее здесь: https://stackoverflow.com/questions/928 ... -signature
Использование открытого ключа в кодировке Base64 для проверки подписи RSA ⇐ C#
Место общения программистов C#
1730307137
Anonymous
В двух словах, это моя проблема:
private string publicKeyString = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDVGUzbydMZS+fnkGTsUkDKEyFOGwghR234d5GjPnMIC0RFtXtw2tdcNM8I9Qk+h6fnPHiA7r27iHBfdxTP3oegQJWpbY2RMwSmOs02eQqpKx4QtIjWqkKk2Gmck5cll9GCoI8AUAA5e0D02T0ZgINDmo5yGPhGAAmqYrm8YiupwQIDAQAB";
/* Some transformation required, using publicKeyString to initiate a new RSACryptoServiceProvider object
*/
//for now:
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
byte[] selfComputedHash = new byte[]; //left out of the example
byte[] signature = new byte[];
bool result = rsa.VerifyHash(selfComputedHash, CryptoConfig.MapNameToOID("SHA1"), signature);
Как видите, проблема заключается в инициировании нового RSACryptoServiceProvider с заданной строкой открытого ключа в кодировке Base64. Мне удалось создать экземпляр с использованием объекта RSAParameters, загруженного с помощью byte[] для модуля и экспоненты, полученных из этой строки открытого ключа, с помощью команды оболочки OpenSSL. Но поскольку этот открытый ключ может измениться в будущем, я хочу иметь возможность хранить его в исходной форме в базе данных. Должен быть более простой способ справиться с этой проблемой.
Многие примеры, которые я прочитал до сих пор, позволяют избежать этой проблемы за счет экспорта и импорта сгенерированных частных и общедоступных ключи к объекту-контейнеру ключей и обратно и использовать его в одном и том же фрагменте кода и, таким образом, не «переносить» ключ в некоторой строковой форме из памяти. Некоторые люди выражали одну и ту же проблему как здесь, на StackOverflow, так и на других сайтах, но мне пока не удалось найти удовлетворительного ответа.
Любая идея более чем добро пожаловать.
Справочная информация:
Мой партнер по связи вычисляет 20-байтовый SHA1-хэш из входной строки переменной длины, состоящей из информации, содержащейся в нескольких поля сообщения в кодировке ASCII. Затем этот хэш подписывается RSA с использованием закрытого ключа моего партнера и отправляется мне вместе с сообщением ASCII. По прибытии я сам вычисляю хеш SHA1, используя те же поля из сообщения ASCII, а затем пытаюсь проверить, не были ли эти поля изменены, с помощью вызова VerifyHash.
Ключ предоставляется в двух формах: обычной и noNL. Версия noNL включена в приведенный выше код, обычная версия такая:
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDVGUzbydMZS+fnkGTsUkDKEyFO
GwghR234d5GjPnMIC0RFtXtw2tdcNM8I9Qk+h6fnPHiA7r27iHBfdxTP3oegQJWp
bY2RMwSmOs02eQqpKx4QtIjWqkKk2Gmck5cll9GCoI8AUAA5e0D02T0ZgINDmo5y
GPhGAAmqYrm8YiupwQIDAQAB
-----END PUBLIC KEY-----
Подробнее здесь: [url]https://stackoverflow.com/questions/9283716/using-base64-encoded-public-key-to-verify-rsa-signature[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия