1

嗨,我正在尝试在我的 windows phone 8 加密应用程序中为我的 RSA 4096 加密生成我的公钥

我正在使用这种方法:

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 = "----BEGIN PUBLIC KEY----\n" + Convert.ToBase64(bpkey)+ "\n----END PUBLIC KEY----";

但是当我将 pkey 发送到服务器时,我发现 pkey 是无效的 pem 格式!!!

任何想法如何正确或如何修复错误。

4

2 回答 2

1

就像我说的,如果您的服务器 DeEncrypt 字符串使用 Java 语言。您不能在 Windows Phone 客户端中使用 RSACryptoServiceProvider 加密字符串。

.Net平台SDK提供RSA加密,由于加随机数,所以它也必须解密。网络解密平台。如果保留这样一个跨平台的java平台解密就会有问题。

你可以试试这个方法。使用 bigintege 转换字符串 http://www.codeproject.com/csharp/biginteger.asp

会没事的

于 2013-09-30T09:54:58.517 回答
1

实际上这是因为 Java 和 .NET 之间的签名存在差异(小端与大端)。只需反转字节数组,您就可以开始了。另请查看:

http://scrypt.codeplex.com

于 2014-01-08T14:54:06.937 回答