2

CryptoAPIを使用して、SYMMETRICWRAPKEYBLOB に書き込まれたキーを ( CryptDecrypt を使用して) 復号化する方法はありますか? 私の C++ プログラムでは、対称キーk1を別の対称キーk2でラップして、対称キー blob にします。k2と等しい3 番目のキーk3がありますが、ハンドルが異なります。私の目標は、このキーでブロブを復号化することです。SIMPLEBLOB と公開鍵を使用して既に実行しました。ご清聴ありがとうございました。ドキュメントはこちら

4

1 に答える 1

4

リンク先のドキュメントにあるように、 SYMMETRICWRAPKEYBLOB に使用される形式はRFC 3217に従います。これは、データが暗号化されてから反転され(最後のバイトが最初になるなど)、再び暗号化される奇妙な形式です。どちらの暗号化も CBC を使用します。CryptImportKey()を使用する代わりに手動で行う場合は、RFC 3217 に従って を 2 回呼び出す必要CryptDecrypt()があり、コードでバイト反転と残りのパッケージ化も行う必要があります。

または、キー blob を でインポートし、独自の非対称(RSA) キーでCryptImportKey()暗号化して再度エクスポートします。これを復号化できます。ある時点で、Microsoft 自身が、対称キーを「そのまま」エクスポートするためには、公開指数が 1 に等しい手作りの RSA 公開キーで呼び出すのが最善の方法であると文書化していました。つまり、実際には正しいRSA キーではありません。 - このような公開指数を使用すると、RSA 暗号化はほとんど操作なしになります。CryptExportKey()

于 2013-07-16T16:27:47.727 に答える