«Неверные данные. \ R \ n» Ошибка для данных подписи RSA - PullRequest
0 голосов
/ 19 сентября 2019

Этот вопрос может быть повторен, но другие решения, похоже, не работают для меня.Я работаю над 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);
 }

На самом деле я не уверен, что параметры RSAP указаны правильно или нет.После запуска этого кода это вызывает исключение:

"Неверные данные. \ R \ n"

Любая помощь будет принята.

...