Windows Phone 8 RSA Шифрование
Привет, я пытаюсь сгенерировать мой открытый ключ для моего шифрования RSA 4096 в моем приложении для шифрования Windows Phone 8.
я использую этот метод:
RSACryptoServiceProvider rsaProvider = новый RSACryptoServiceProvider(4096); var pub_key = rsaProvider.ExportParameters(false); // экспортируем открытый ключ
и теперь я пытаюсь преобразовать pub_key в формат pem, чтобы я мог отправить его на сервер, я делаю следующий шаг
Byte[] bpkey = Combine(pub_key.Modulus, pub_key.Exponent);
я объединяю массив байтов в один, используя "открытый ключ RSA = модуль + экспонента"
string pkey = "---- НАЧАТЬ ПУБЛИЧНЫЙ КЛЮЧ ----\n" + Convert.ToBase64(bpkey)+ "\n---- КОНЕЦ ПУБЛИЧНОГО КЛЮЧА ----";
но я получаю, что pkey является недопустимым форматом pem, когда я отправляю его на сервер!!!
Любая идея, как это правильно или как исправить ошибку.
2 ответа
Точно так же, как я говорю, если ваша строка DeEncrypt сервера использует язык Java. Вы не можете использовать строку шифрования RSACryptoServiceProvider в клиенте Windows Phone.
Платформа SDK.Net обеспечивает шифрование RSA из-за случайных чисел, поэтому она также должна расшифровывать. Чистая платформа для расшифровки. Если вы сохраните такую кроссплатформенную платформу java, дешифрование будет проблемой.
Вы можете попробовать этот способ. используйте строку преобразования bigintege http://www.codeproject.com/csharp/biginteger.asp
будет хорошо
На самом деле это потому, что есть разница в подписывании между Java и.NET (little-endian против big endian). Просто поменяйте местами байтовые массивы, и все будет хорошо. Также проверьте: