Необходимо расшифровать блока данных используя не мой 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 — ничего не помогло.
Здравствуйте, 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
Здравствуйте, Spiceman, Вы писали:
DC>>Необходимо расшифровать блока данных используя не мой Private key, а их Public Key. DC>>При попытки сделать Decrypt возникает ошибка "Bad key". Насколько я знаю алгоритм RSA произвести такое действие — вполне нормально. Мне кажется что проблема с загрузкой ключа. Но ничего вразумительного в интернете я не нашел =( S>Хм. RSA ассимметричный алгоритм, что означает, что шифрование и дешифрование происходит разными ключами. S>RSACryptoServiceProvider может вам дать ключ в двух вариантах — xml, содержащий оба ключа, либо xml, содержащий только открытый ключ. Вот тем, что содержит оба ключа, можно и шифровать и дешифровать. А тем, что содержит только открытый ключ можно только шифровать.
Да, все так. Но насколько я знаю сам алгоритм, можно зашифровать и приватным ключом, а расшифровать публичным. Такой метод используется для проверки сигнатуры, например. В моем случае мне приходит контрольная сумма генерированная удаленной системой, и для проверки подлинности суммы она запакована приватным ключом удаленной системы.
Re: RSA decrypt используя public key сохраненный в XML
Оказалось что моя задача стандартна, т.е. необходимость проверки данные при помощи подсчета hash, и валидация его при помощи RSA алгоритма уже встроена в RSA provider. А именно это функция VerifyHash.
Спасибо всем за попытку помощи.