1

秘密鍵と公開鍵の代わりに純粋な暗号化および復号化鍵を使用することは可能ですか?.Net非対称RSA実装で知っているように、秘密鍵RSAParameters parameters = (new RSACryptoServiceProvider()).ExportParameters(true)は公開鍵のスーパーセットです。また、秘密鍵を使用して、データの暗号化と復号化の両方を行うことができます。しかし、私はデータを解読するためだけに鍵が必要です。どうやってするの?

RSAParametersフィールドを無効にすることを試みましたが、RSACryptoServiceProviderオブジェクトはそのようなパラメーターをインポートできません。

4

4 に答える 4

2

あなたが何を求めていると私が思うかを尋ねているなら、あなたはこのような問題を解決しています:

一部のデータを暗号化します。それをクライアントに送信し、復号化できるようにしたいが、何も暗号化できないようにしたい場合は、他のクライアントに自分があなたであることを納得させることができるからです。

それは近いですか?どのような問題を解決しているのか教えていただけますか?

スレッドの残りの人々にとって、OPが通常の暗号化のみの公開鍵ではなく、復号化のみの鍵を望んでいることは明らかです。

編集:秘密鍵を暗号化に使用できないという点でコメントは正しいですが、秘密鍵を指定して公開鍵を生成することはそれほど難しくありません。秘密鍵を持っている場合は、実質的に両方の鍵を持つことができます。

編集 2: OP、おそらくデジタル署名を調べる必要があります。(秘密鍵を使用して)メッセージに署名し、公開鍵で署名を確認できます。これはまさにあなたが求めていたものだと思います。

于 2010-06-17T13:11:02.740 に答える
1

復号化には秘密鍵、暗号化には公開鍵を使用する必要があると思います。

受信者(復号化者)は、その公開鍵を送信者(暗号化者)に送信します。したがって、誰もがメッセージを送信でき、受信者だけがメッセージを読むことができます。これはあなたが必要なものですか?

メッセージが特定の送信者からのものであることを確認する必要がある場合は、独自の秘密鍵を使用して署名を追加する必要があります。受信者は、送信者の公開鍵を使用してこれを確認できます。

于 2010-06-17T12:16:31.547 に答える
1

データをデコードするには、公開鍵または秘密鍵が必要です。エンコード方法によって異なります。

標準のパターンに固執し、秘密鍵を決して配布しないように注意してください。


コメントから(さまざまな回答まで)、(データのハッシュの)署名が必要です。誰でも持てる鍵でデータを暗号化しても意味がありません。

署名には標準の関数とパターンがあります。

于 2010-06-17T11:38:45.153 に答える
0

秘密鍵所有者が、結果が公開鍵所有者によって送信されたメッセージと見分けがつかないようなものを暗号化できないようにしたい場合は、データを単純に二重にラップすることができます。

単に2つのキーペアを持っています。

サイドAはキーペア1の秘密鍵を取得し、キーペア2の公開鍵を取得します。サイドBはキーペア1の公開鍵とキーペア2の秘密鍵を取得します。

サイドBは、最初にキーペア1の公開鍵でメッセージを暗号化し、次にキーペア2の秘密鍵でメッセージを暗号化することによってメッセージを送信します。

サイドAは、キーペア2の公開キーとキーペア1の秘密キーを(この順序で)使用して結果を復号化します。

サイドAはキーペア1の公開鍵を生成できますが、キーペア2の秘密鍵を生成できないため、サイドAは有効なメッセージを生成できません。

逆は反対方向に機能します。

欠点:他のすべての人(またはコンピューター)が通信している中央の人(またはサーバー)がある場合、各当事者は独自の秘密鍵を必要とし、対応する公開鍵を中央の人(またはサーバー)と共有する必要があります)彼らはと通信しています。

于 2010-06-21T02:48:22.513 に答える