2012-03-20 7 views
0

を与える:http://www.codeproject.com/Articles/10877/Public-Key-RSA-Encryption-in-C-NETRSACryptoPadは、私がここでRSACryptoPADの例で私のRSA実装の正しさを検証しようとして異なる結果を毎回

しかし、それは常に異なる暗号化結果を作成します。 RSAはmodとpower操作ではありませんか?しかし、プログラムはすべての異なる暗号化されたテキストを正しく解読できます。私の結果はhttp://nmichaels.org/rsa.pyサイトと同じです。私はRSACryptoPADが他のことをやっていると思いますか?

答えて

2

コードにはRSACryptoServiceProviderが使用されています。ライン

byte[] encryptedBytes = rsaCryptoServiceProvider.Encrypt(tempBytes, true); 

パディングにランダム性を導入OAEP paddingを用いて暗号化することを指示します。これを行う理由は、同じ平文を暗号化すると常に異なる結果が得られるからです(見ているとおり)。これは良いことです。攻撃者が同じメッセージを複数回送信したと見なして情報漏洩を阻止するためです。

なぜこれが重要なのかの歴史的な例があります。 "AF is short of water"

+0

ありがとうございました。 RSACryptoServiceProviderはまた、バイトを逆にします。私はそれをしました。そして今、私は最初のバイトだけを解読できますか? ' InvertibleRSAFunction privateKey; privateKey.Initialize(params.GetModulus()、params.GetPublicExponent()、params.GetPrivateExponent()); RSAES_OAEP_SHA_Decryptor decryptor(privateKey); StringSource(cipher、true、 新しいPK_DecryptorFilter(rng、decryptor、 新しいStringSink(ugur) )// PK_DecryptorFilter ); // StringSource ' – ugur

+0

ugurに関する新しい質問を作成してください。あなたのコードをそこに貼り付けることができます(私は何かが必要ではないと思いますが、十分な情報で助けてください)。 –

関連する問題

 関連する問題