我正在寻找RSACryptoServiceProvider助手,并找到了两个不同的实现
1) http://www.cnblogs.com/WYB/archive/2008/06/19/1225704.html
2) https://github.com/robvolk/Helpers.Net/blob/master/Src/Helpers.Net/EncryptionExtensions.cs
他们俩都在工作
var encryptedBytes = myBytes.RSAEncrypt(publicKey);
System.Text.Encoding.Unicode.GetString(encryptedBytes);
returns strings like "蹩巷Ӂය馧㾵봽놶徤蕺蓷課Ϝ堲泍썳⁙䃑ക늏...."
myString.EncryptStringUsingXMLFile(publicKey)
returns strings like "AnvFFT6YpoiAyIFwl+tueZq56Zcb0B7WhBEvz5uWl...."也许有人可以解释为什么第一次产生中文字符串,以及如何改变这一点?
哪种方法更好?
发布于 2013-09-18 04:38:41
回答你的第一个问题。虽然它看起来像是在生成汉字,但实际上它正在将一个字节数组转换为unicode。在c#中,通常情况下,当您想要存储一个字节数组时,可以将它转换为base64,这就是您的第二个示例所返回的内容。
您的第一个示例如下:
var encryptedBytes = myBytes.RSAEncrypt(publicKey);
Convert.ToBase64String(encryptedBytes) // this line changed
returns strings like "AnvFFT6YKpoiAy...."至于推荐的内容,最常见的是使用base64。人们在unicode或UTF-8上使用base64来处理二进制数据的原因可以在以下答案中找到:
https://stackoverflow.com/a/201491/701062
MSDN - Convert.ToBase64String(byte[])
http://msdn.microsoft.com/en-us/library/dhx0d524(v=vs.100).aspx
MSDN -Convert.FromBase64String(字符串)-如果需要将其转换回字节数组,则非常有用。
http://msdn.microsoft.com/en-us/library/system.convert.frombase64string(v=vs.100).aspx
https://stackoverflow.com/questions/18861742
复制相似问题