問題タブ [cryptoapi]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - Win32 CryptoAPIから生成されたキーblobを.NETアプリケーションで使用するにはどうすればよいですか?
C ++forWindowsで記述された既存のアプリケーションがあります。このアプリケーションは、Win32 CryptoAPIを使用して、データを暗号化/復号化するためのTripleDESセッションキーを生成します。1つのトリックの指数を使用して、セッションキーをblobとしてエクスポートします。これにより、blobを復号化された形式でどこかに保存できます。
問題は、これを.NETアプリケーション(C#)でどのように使用できるかということです。フレームワークは、CryptoAPIが実行していることの多くをカプセル化/ラップします。問題の一部は、 Microsoft Enhanced Cryptographic ProviderのTripleDESアルゴリズムが168ビット(56ビットの3キー)であるとCryptAPIが述べていることです。ただし、.NET Frameworkは、キーが192ビット(64ビットの3キー)であると述べています。どうやら、.NETフレームワークの3つの余分なバイトはパリティ用ですか?
とにかく、blobからキー部分を読み取り、それを.NETアプリケーションで使用できるようにする必要があります。現在、.NETでキーを使用しようとすると、期待した結果が得られません。復号化は惨めに失敗しています。どんな助けでも大歓迎です。
アップデート:
私はこれを解決する方法に取り組んでおり、時間内に投稿する解決策を考え出しました。ただし、それでも他の人からのフィードバックをいただければ幸いです。
encryption - マシン間での暗号化/復号化は不可
XP と Vista の間で "CryptUnprotectData" (Crypt32.dll から公開) に対して同じ呼び出しを使用しています。XPでは問題なく動作します。Vista で実行すると、次の例外が発生します。
予想どおり、crypt32.dll のバージョンは XP と Vista で異なります (SP3 またはその他の更新の結果として、実際には XP の方が新しいバージョンになっています)。
より具体的には、データを暗号化してレジストリに入れ、「CryptUnprotectData」を使用して読み取りと復号化を行っています。UAC がオフになっています。
これを前に見た人はいますか?
cryptography - P & G を持っています。Wincrypt API を使用して Diffie-Hellman キーペアを生成するにはどうすればよいですか?
ここにMSDN の記事がありますが、あまり進んでいません。
ここでは で失敗しますNTE_BAD_DATA
。を使用してMS_DEF_DSS_DH_PROV
います。何を与える?
cryptography - Diffie-Hellman に Wincrypt を使用しています。共有シークレットをプレーン テキストでエクスポートできますか?
OK-- Mikeのおかげで、Wincrypt に Diffie-Hellman 鍵ペアを生成させることができました。公開鍵をエクスポートする方法と、相手の公開鍵をインポートする方法を見つけました。ドキュメントによると、相手の公開鍵をインポートすると、共有秘密が計算されます。偉大な。
私は今、その共有された秘密を手に入れる必要がありますが、それは不可能だと思います. アルゴリズム IDを何かに変更するために呼び出さない限り、単純CryptExportKey
にタイプで呼び出してもPLAINTEXTKEYBLOB
失敗します。しかし、私は他の何かが欲しいのではなく、共有された秘密が欲しい. ただし、API はこれを思いとどまらせるように設計されているようです。CryptSetKeyParam
CALG_AGREEDKEY_ANY
そこに何かアイデアはありますか?ここでの問題は、WiFi Protected Setup の実装の片面しか書いていないことです。したがって、プロトコルは私のために定義されており、相手は私に HCRYPTKEY を与えていません。
cryptography - Microsoft ECSPを使用してRSA公開鍵のみで小さなデータブロックを暗号化するにはどうすればよいですか?
512ビットのRSA公開鍵を使用してデータの小さなブロック(16バイト)を暗号化する必要があります。これは、MS CSP APIを除いて、私が知っているほとんどの暗号化ライブラリにとって非常に簡単な作業です。CryptEncrypt関数のドキュメントには次のように記載されています
Microsoft Enhanced Cryptographic Providerは、RSA公開鍵による直接暗号化とRSA秘密鍵による復号化をサポートしています。暗号化はPKCS#1パディングを使用します。
しかし、それは私にはうまくいきませんでした。私のコードは機能し、正しいサイズの暗号化されたデータブロックを生成しますが、opensslはそれを解読できません。CryptEncryptがまだ対称サイファーを使用しているように見えます。
残念ながら、私が見つけたすべての例は、対称暗号と組み合わせた暗号化を参照しているため、間違いなく物事を簡単にする実用的な例はありません。
誰かが私にそのような例を指摘するか、私が見逃したそれほど明白な落とし穴がないかどうか私に知らせてもらえますか?
ありがとうございました。
cryptography - CryptoAPI を使用して秘密鍵を作成し、シードする方法はありますか?
2 つの平文キーからシードされた秘密キーを作成する必要があります。2 つの平文キーは、異なるマネージャーによって維持されます。これは、デュアル コントロール キーの要件を満たすためです。2 つのキーを 1 つのシードに結合できます。ただし、Microsoft CryptoAPI ドキュメントを読むと、すべてのキー生成は完全にランダムであり、シードを提供する方法はありません。これは本当ですか?はいの場合、このキーを作成するための代替ソリューションを提案できますか?
注: キーはキー コンテナーに格納され、エクスポート不可としてマークされます。
cryptoapi - Microsoft は、独自の MS CryptoAPI に接続する PKCS #11 プロバイダーを提供していますか?
PKCS #11 インターフェイスを使用していくつかのテストを実行しようとしていますが、Microsoft が PKCS #11 機能を提供するソフトウェア ベースの実装を提供しているかどうか疑問に思っていました。
HSM が到着して適切に構成されるのを待つのではなく、今すぐインターフェースとの対話のテストを開始したいと思います。
java - Java セキュリティ - MSCAPI プロバイダ: パスワード ポップアップなしで使用するには?
アプリケーションでSun の MSCAPI プロバイダを使用することができました。私が今抱えている問題は、コードでパスワードを指定したにもかかわらず、パスワードを要求するウィンドウが常にポップアップすることです。Web サービスで暗号化機能が必要なため、これは問題です。
これが私が今持っているコードです:
これはうまく機能していますが、最後の行が実行されたときにパスワードを求めるポップアップが表示されます。どうすればそれを防ぐことができますか?
c# - P/CryptImportKeyの呼び出しと構造体のマーシャリング
ある時点でC++Win32サービスで復号化されるデータを暗号化する前に、C#からCryptImportKeyをP / Invokeして、既知のキーを設定しようとしています。P / Invokeのメソッドシグネチャがあり、すべて正常に機能しますが、キーBLOBを受け入れることができません。C ++構造体は以下のコメントにあり、マーシャリング用のC#構造体はその下にあります。
次に、以下を使用します。
バイト配列にアクセスしてCryptImportKeyに渡すために、キーを取得することはないようです。それを使用して暗号化すると、キーを使用していないことを示す異なる暗号文時間が表示されます。
編集:
重要なblobのものは、データを正常に暗号化および復号化できるC++コードからのものです。ヘッダーが2回含まれているという点があると思いますが、私が抱えている主な問題は、Byte[]rgbKeyDataの値がバイト配列arrに入力されていないことです。
windows - Microsoft CryptoAPI Book
Microsoft CryptoAPIを使用して、サーバー側の証明書検証を使用して独自のSSLソケット(CSocket ansestor)を作成する必要があります。
どの本が私(または他のユーザーフレンドリーな情報源)に役立つか教えていただけますか?