RSA签名数据出现“错误数据。\ r \ n”错误

时间:2019-09-19 09:34:08

标签: c# encoding rsa signing

这个问题可能是重复的,但是其他解决方案似乎对我不起作用。我是第一次使用RSA,所以有点困惑。我有公共和私有密钥,并希望使用这些密钥对文本进行签名。下面是我的代码:

public void RSA()
{
    var publickey = "***";
    var privatekey = "***";
    using (var RSA = new RSACryptoServiceProvider())
    {
                UnicodeEncoding ByteConverter = new UnicodeEncoding();
                RSAParameters myRSAParameters = RSA.ExportParameters(true);
                myRSAParameters.Modulus = ByteConverter.GetBytes(publickey);
                myRSAParameters.D = ByteConverter.GetBytes(privatekey);
                myRSAParameters.Exponent = ByteConverter.GetBytes("5");
                string signedmessage = SignData("ABC", myRSAParameters);
     }
}

 public static String SignData(string message, RSAParameters privatekey)
 {
            byte[] signedBytes;
            using (var rsa = new RSACryptoServiceProvider())
            {
                var encoder = new UTF8Encoding();
                byte[] originalData = encoder.GetBytes(message);

                try
                {
                    rsa.ImportParameters(privatekey);
                    signedBytes = rsa.SignData(originalData, CryptoConfig.MapNameToOID("SHA512"));
                }
                catch (CryptographicException e)
                {
                    Console.WriteLine(e.Message);
                    return null;
                }
                finally
                {
                    rsa.PersistKeyInCsp = false;
                }
            }

            return Convert.ToBase64String(signedBytes);
 }

实际上,我不确定RSAParameters是否正确给出。运行此代码后,将引发

异常
  

“错误数据。\ r \ n”

任何帮助将不胜感激。

0 个答案:

没有答案