RSA decrypt используя public key сохраненный в XML
От: DaDa Cloun Россия  
Дата: 26.06.09 10:14
Оценка:
Здравствуйте

Необходимо расшифровать блока данных используя не мой Private key, а их Public Key.
    private byte[] decode(string urlEncodedEncryptedData, RSACryptoServiceProvider cryptoProvider)
    {
      var encryptedB64Data = UrlDecode(urlEncodedEncryptedData);
      var encryptedData = Base64Decode(encryptedB64Data);
      return cryptoProvider.Decrypt(encryptedData, false); //<- тут exception
    }

    public byte[] DecodeUsingPublic(string urlEncodedEncryptedData)
    {
      using (var rsaCryptoProvider = new RSACryptoServiceProvider(cspParam))
      {
        rsaCryptoProvider.FromXmlString(_wwPublicKeyInfo);
        return decode(urlEncodedEncryptedData, rsaCryptoProvider);
      }
    }

При попытки сделать Decrypt возникает ошибка "Bad key". Насколько я знаю алгоритм RSA произвести такое действие — вполне нормально. Мне кажется что проблема с загрузкой ключа. Но ничего вразумительного в интернете я не нашел =(
Пробовал создать экземпляр CspParameters и устанавливал флаг CspProviderFlags.UseMachineKeyStore, потом KeyNumber.Signature — ничего не помогло.
rsa
Re: RSA decrypt используя public key сохраненный в XML
От: Spiceman  
Дата: 26.06.09 12:29
Оценка:
Здравствуйте, DaDa Cloun, Вы писали:

DC>Здравствуйте


DC>Необходимо расшифровать блока данных используя не мой Private key, а их Public Key.

DC>При попытки сделать Decrypt возникает ошибка "Bad key". Насколько я знаю алгоритм RSA произвести такое действие — вполне нормально. Мне кажется что проблема с загрузкой ключа. Но ничего вразумительного в интернете я не нашел =(

Хм. RSA ассимметричный алгоритм, что означает, что шифрование и дешифрование происходит разными ключами.
RSACryptoServiceProvider может вам дать ключ в двух вариантах — xml, содержащий оба ключа, либо xml, содержащий только открытый ключ. Вот тем, что содержит оба ключа, можно и шифровать и дешифровать. А тем, что содержит только открытый ключ можно только шифровать.

public override string ToXmlString(
bool includePrivateParameters
)

includePrivateParameters
true to include a public and private RSA key; false to include only the public key.

Re[2]: RSA decrypt используя public key сохраненный в XML
От: DaDa Cloun Россия  
Дата: 26.06.09 12:38
Оценка:
Здравствуйте, Spiceman, Вы писали:

DC>>Необходимо расшифровать блока данных используя не мой Private key, а их Public Key.

DC>>При попытки сделать Decrypt возникает ошибка "Bad key". Насколько я знаю алгоритм RSA произвести такое действие — вполне нормально. Мне кажется что проблема с загрузкой ключа. Но ничего вразумительного в интернете я не нашел =(
S>Хм. RSA ассимметричный алгоритм, что означает, что шифрование и дешифрование происходит разными ключами.
S>RSACryptoServiceProvider может вам дать ключ в двух вариантах — xml, содержащий оба ключа, либо xml, содержащий только открытый ключ. Вот тем, что содержит оба ключа, можно и шифровать и дешифровать. А тем, что содержит только открытый ключ можно только шифровать.

Да, все так. Но насколько я знаю сам алгоритм, можно зашифровать и приватным ключом, а расшифровать публичным. Такой метод используется для проверки сигнатуры, например. В моем случае мне приходит контрольная сумма генерированная удаленной системой, и для проверки подлинности суммы она запакована приватным ключом удаленной системы.
Re: RSA decrypt используя public key сохраненный в XML
От: DaDa Cloun Россия  
Дата: 26.06.09 14:37
Оценка:
Здравствуйте, DaDa Cloun, Вы писали:

Оказалось что моя задача стандартна, т.е. необходимость проверки данные при помощи подсчета hash, и валидация его при помощи RSA алгоритма уже встроена в RSA provider. А именно это функция VerifyHash.
Спасибо всем за попытку помощи.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.