РЕДАКТИРОВАТЬ 1:
Это очень интересно, но
Convert.FromBase64String("MjMwMDM5MDYyODE5NDc3MTQwODE5MzM0MTM4NzgzNjUyNTQ1MTU5NzAxNTY5NjIyMTc4OTc1NzIwODUzNjQwODY2NjM3NTI4NDQ1NDYzODU5MzY0NDY4MjIzMjk0MTI3NTg4NjY5NTQ5NjkxOTgxNTIxOTMwMzEwMTg4Njg4MjMzNjUzOTYwNzkzMzkzNjQwMDEwNjk3MDA3ODA4MDc3NDM1MTc1ODcwMjk2NzQ2ODQzMjAyODgwNzgxNzYzNDcxNTY2OTc0NDQ2MjY2NDA2MTQxOTU1Nzk4MjQwOTMwMjIxNzA4NTkzNDk5NjQ0MDM0ODc3ODQzODYxOTgyOTAyOTYxMzI0NzkyODAzNjQ1Mzk2MTk0ODcyNz=");
терпит неудачу с неверной длиной.
https://www.base64decode.org/ декодирует это содержимое base64 на
2300390628194771408193341387836525451597015696221789757208536408666375284454638593644682232941275886695496919815219303101886882336539607933936400106970078080774351758702967468432028807817634715669744462664061419557982409302217085934996440348778438619829029613247928036453961948727
Сначала я подумал, что сайт дал мне шестнадцатеричное представление байтов, к которым он декодирует. К сожалению, он просто выводит STRING.
Это означает, что нам нужно применить еще одно преобразование (я сделал это в своем коде, когда выложил ответ здесь, но не показал, как это должно быть сделано в ваш)
Этот код должен работать и для вас:
static void Main(string[] args)
{
RSAParameters result = new RSAParameters()
{
// If the following is working on your system:
Modulus = HexStringToByteArray(Convert.FromBase64String("MjMwMDM5MDYyODE5NDc3MTQwODE5MzM0MTM4NzgzNjUyNTQ1MTU5NzAxNTY5NjIyMTc4OTc1NzIwODUzNjQwODY2NjM3NTI4NDQ1NDYzODU5MzY0NDY4MjIzMjk0MTI3NTg4NjY5NTQ5NjkxOTgxNTIxOTMwMzEwMTg4Njg4MjMzNjUzOTYwNzkzMzkzNjQwMDEwNjk3MDA3ODA4MDc3NDM1MTc1ODcwMjk2NzQ2ODQzMjAyODgwNzgxNzYzNDcxNTY2OTc0NDQ2MjY2NDA2MTQxOTU1Nzk4MjQwOTMwMjIxNzA4NTkzNDk5NjQ0MDM0ODc3ODQzODYxOTgyOTAyOTYxMzI0NzkyODAzNjQ1Mzk2MTk0ODcyNz=")),
// And since it is not working on my environment:
// Modulus = HexStringToByteArray("2300390628194771408193341387836525451597015696221789757208536408666375284454638593644682232941275886695496919815219303101886882336539607933936400106970078080774351758702967468432028807817634715669744462664061419557982409302217085934996440348778438619829029613247928036453961948727"),
Exponent = HexStringToByteArray("010001")
};
byte[] bytes = Encoding.ASCII.GetBytes("data");
using (RSACryptoServiceProvider RSA = new RSACryptoServiceProvider())
{
RSA.ImportParameters(result);
var encryptedData = RSA.Encrypt(bytes, true);
Console.WriteLine(encryptedData);
}
}
ОРИГИНАЛЬНЫЙ ПОЧТ:
Проблема здесь:
Exponent = Encoding.ASCII.GetBytes("10001");
На самом деле это шестнадцатеричное представление байтов 0x 01 00 01 (3 байта)
Примечание. Сбой Convert.FromBase64String () для введенного вами ввода. Вот почему была путаница по этому поводу. Это не помогло и на моем локальном компьютере, поэтому я использовал онлайн-декодер , который успешно расшифровал его,
Я использовал это декодированное значение для модуля для воспроизведения.
public static byte[] HexStringToByteArray(string hexString)
{
MemoryStream stream = new MemoryStream(hexString.Length / 2);
for (int i = default(int); i < hexString.Length; i += 2)
{
stream.WriteByte(byte.Parse(hexString.Substring(i, 2), System.Globalization.NumberStyles.AllowHexSpecifier));
}
return stream.ToArray();
}
А потом;
Exponent = HexStringToByteArray("010001")