1

RSACryptoServiceProvider ヘルパーを探していたところ、2 つの異なる実装が見つかりました。

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...."

最初に中国語の文字列を生成する理由と、それを変更する方法を説明できる人がいるでしょうか?

どのアプローチが良いですか?

4

1 に答える 1

0

あなたの最初の質問に答えるために。漢字を生成しているように見えるかもしれませんが、実際に起こっているのは、バイト配列をユニコードに変換していることです。通常、C#では、バイト配列を保存する場合、2番目の例が返すように見える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(バイト[])

http://msdn.microsoft.com/en-us/library/dhx0d524(v=vs.100).aspx

MSDN - Convert.FromBase64String(string) - バイト配列に戻す必要がある場合に便利

http://msdn.microsoft.com/en-us/library/system.convert.frombase64string(v=vs.100).aspx

于 2013-09-18T04:38:41.073 に答える