error Keyset does not exist when I want to Use for sign data in c#

163 views Asked by At

I want to use a encryption algorithm (custom encryption) but I have a problem when I want to sign my byte array in c# and use this sample of code.

using (var rsa = new RSACryptoServiceProvider())
            {
                
rsa.FromXmlString("<RSAKeyValue><Modulus>MIGfMA0GDAQAB</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>");

                //// Write the message to a byte array using UTF8 as the encoding.
                

                try
                {
                    //// Sign the data, using SHA256 as the hashing algorithm 
                    signedBytes = rsa.SignData(originalData, new SHA256CryptoServiceProvider());

                    

                }
                catch (CryptographicException e)
                {
                    Console.WriteLine(e.Message);
                    return null;**your text**
                }
                finally
                {
                    //// Set the keycontainer to be cleared when rsa is garbage collected.
                    rsa.PersistKeyInCsp = false;
                }
            }

Now when the code reach to SIgnData I get this error error Keyset does not exist

Original data is a byte Array after using a hash function like sha256 for it.

how can i solve this problem? thanks

1

There are 1 answers

1
Mehrdad Noroozi On BEST ANSWER

this is a clear error that you get from FromXmlString function of rsa algorithm, as I know you must use this complete format and structure of xml for your publik and private key,,

the Correct format is

<RSAKeyValue>
    <Modulus>xxxxxxx</Modulus>
    <Exponent>AQAB</Exponent>
    <P>xxxxxxx</P>
    <Q>xxxxx</Q>
    <DP>xxxxxx</DP>
    <DQ>xxxxxx</DQ>
    <InverseQ>xxxxx</InverseQ>
    <D>xxxxx</D>
</RSAKeyValue>

As you know X is replace by your public and private key,, Also you must Know its a Asymmetric method of encryption.

and for conversion of your public and private ket to xml format you can use some site like

https://raskeyconverter.azurewebsites.net/PemToXml?handler=ConvertXML

best regard