質問

私は会社のプロジェクトで C# で PKI ライブラリを実装する任務を負っていますが、適切な実装が見つかりませんでした。複数のライブラリがあり、削除された MSDN ライブラリを指す壊れたリンクが多数あるようです。私は、Crypt32.dll を使用している人、独自のライブラリを構築している人、P/Invoke を使用してシステム証明書ストアにアクセスしている人、組み込みライブラリを拡張している人、単純に C# に当てはまらない例 (例:Java の例)、および商用ライブラリ。

私の質問は、データの単純な暗号化/復号化に最も推奨される実装/ライブラリはどれですか?

これを使用して行う予定の背景として、秘密キー (.pfx) を使用してメッセージを暗号化し、公開キー (.cer) で復号化する必要があるだけです。メッセージの署名と認証はプロジェクトのこのレベルでは必要ありませんが、将来的には必要になる可能性があります。暗号化の長さに関する言及を見たことがありますが、不安を感じます。あらゆる長さのメッセージを暗号化できる必要があります (もちろん、当然のことですが)。これは心配する必要がありますか? 心配する必要がある場合、対処方法はありますか?

可能であれば、Windows 証明書マネージャーに公開キーと秘密キーを保存したくないのですが、実装が大幅に簡単になるのであれば、それでも構いません。

PKI と暗号化が大規模で複雑なテーマであることは承知していますが、とにかく比較的シンプルなライブラリを望んでいます...(期待できるよね?)

ありがとう!

役に立ちましたか?

解決

そうですね、組み込みクラスがニーズをカバーしていないことについては言及しませんでしたが、どうですか System.Security.Cryptography.RSACryptoServiceProvider?

ストリームを非対称的に暗号化/復号化するための、認定された方法が多数用意されています。

途中で役立つチュートリアル/ガイドがいくつかあります。

http://www.codeproject.com/KB/security/RSACryptoPad.aspx

http://www.eggheadcafe.com/articles/20020630.asp

さらに数え切れないほどの発見があります グーグル.

アップデート:長さの制限については、暗号化と復号化の両方で同じバッファ アルゴリズムを実装するだけであれば問題はありません。

アップデート2:はい、私の例は RSACryptoProvider, 、ただし、から派生した任意のクラスを使用できます。 システム.セキュリティ.暗号化.非対称アルゴリズム, 公開鍵/秘密鍵ソリューションが必要な場合。それとも自分で構築するか...またはそうでないかもしれません :)

他のヒント

はい、組み込みクラスの何が問題なのでしょうか?

Windows 証明書ストアを使用したくない場合は、次のようなものを使用できます

RSACryptoServiceProvider rscp = new RSACryptoServiceProvider();
rscp.FromXmlString("<RSAKeyValue><Modulus>key data gere</Modulus><Exponent></Exponent></RSAKeyValue>");

ただし、これが秘密鍵にとって良いアイデアであるかどうかはわかりません。

この件に関しては良いチュートリアルがあります ここ

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top