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). Просто поменяйте местами байтовые массивы, и все будет хорошо. Также проверьте:

http://scrypt.codeplex.com/

Другие вопросы по тегам