c#で秘密鍵から公開鍵を抽出する方法はありますか? そうすればToXMLString()、公開鍵情報を秘密鍵と一緒に保存するかどうかを設定できます。だから今、私は秘密から公開鍵を抽出する方法があると考えていますか?
3 に答える
RSA の通常の秘密鍵形式には、公開鍵が含まれています (「公開指数」は、タイミング攻撃に抵抗する方法で秘密鍵操作を実装するのに役立ちます)。したがって、秘密鍵から公開鍵を抽出することができます。
(理論的には、公開指数を含まない「純粋な RSA 秘密鍵」を使用することは可能ですが、サイドチャネル攻撃に対する保護がはるかに難しくなり、パフォーマンスが低下するなどの欠点があります。 . 秘密鍵を持っている場合、実際には完全な鍵ペアを持っていると想定できます。)
C#/.NET 標準ライブラリでは、公開 RSA キーと秘密 RSA キーを XML 文字列 ( ToXmlString()and FromXmlString()) またはカスタムRSAParameters構造 ( ExportParameters()and ImportParameters()) として表すことができます。完全な秘密鍵を取得できる場合は、公開鍵を構成する公開フィールド (モジュラスと公開指数) を選択するだけです。RSACryptoServiceProvider秘密鍵のエクスポートを拒否する可能性がある (ただし、通常は公開鍵のエクスポートを受け入れる) 基になる RSA 実装へのインターフェイスである可能性があることに注意してください。
秘密鍵からモジュラスを取得すると、公開指数は-おそらく-65537です。これまでに見たすべてのMicrosoft暗号システムは、その指数で公開鍵を生成します。公開指数と係数の組み合わせが公開鍵です。
保存して秘密鍵を含めることができれば、保存しているのは秘密鍵だけではありません。
ただし、本当に秘密鍵しか持っていない場合は、公開鍵を「抽出」することはできません。それができれば、今日のセキュリティのほとんどが時代遅れになります。
つまり、基本的に、あなたが秘密鍵しか持っておらず、鍵のペアを持っていて、そこから公開鍵を抽出できるとは思いません。
それが C# または .NET で簡単に実行できるかどうかはわかりません。