問題タブ [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.

0 投票する
1 に答える
894 参照

outlook - Smartcard Minidriver [Windows] を使用した電子メール署名 (Outlook)

私はスマート カード ミニドライバーを開発しており、Outlook 2007 を使用して電子メールに署名しようとしています。必要なすべての機能をミニドライバーに実装しました。

「スマートカード ユーザー」証明書を作成して保存することができました。これはスマートカード上の秘密キーです (ミニドライバー経由で Microsoft 証明書サービスを使用)。

  • Outlook 経由で電子メールに署名しようとすると、エラー メッセージ (内部エラー) が表示されます。ミニドライバーへの最後の呼び出しは、"cmapfile" の ReadFile です。

  • 異なる非スマートカード証明書を使用して Outlook 経由で電子メールに署名しようとすると、正常に動作します。

  • (Windows SDK サンプルに基づく) CryptoAPI を使用してデータに署名しようとすると、正常に動作します。

Windows 7 を使用しています。

誰かがこの問題をデバッグする方法を知りましたか?

CAPI2 イベントログを有効にしようとしましたが、適切な情報が得られません。

0 投票する
0 に答える
236 参照

c# - CryptoAPI と .NET 暗号化 (TripleDESCryptoServiceProvider) を使用して同等の出力を生成するにはどうすればよいですか?

TripleDES 暗号化を使用してデータを暗号化および復号化する C#/.NET コードがあります。MSDN で提供されているサンプル コードにかなり忠実に準拠しています。暗号化部分は次のようになります。

C# での暗号化と復号化により、これはすべて魔法のように機能します。問題は、上記の暗号化を複製する小さな Win32 ユーティリティを作成する必要があることです。CryptoAPI を使用していくつかの方法を試しましたが、何をしても、.NET ピースが復号化できるという出力が得られません。同じ出力を生成する同等の C++ コードを教えてください。

.NET 関数がデータを暗号化するために使用する CryptoAPI のどのメソッドを使用するかはわかりません。どのオプションが使用され、キーを生成するためにどの方法が使用されますか?

とにかくC#で書くか、共通のライブラリブリッジを作成することを誰かが提案する前に、残念ながらそれらのオプションは検討の余地がありません。Win32 で .NET を使用し、DLL を使用せずに実際に動作する必要があります。C# コードを変更する余裕があります。

私は暗号化に慣れていないので、これが骨の折れる場合は事前にお詫び申し上げます。

0 投票する
2 に答える
3359 参照

c - MicrosoftCAPIでのSHA1の使用

SHA1ハッシュがあり、署名する必要があります。CryptSignHash()メソッドには、署名用のHCRYPTHASHハンドルが必要です。私はそれを作成し、実際のハッシュ値をすでに持っているので、それを設定します:

hashBytesは20バイトの配列です。

ただし、問題は、このHCRYPTHASHハンドルから生成された署名が正しくないことです。問題は、CAPIがhashBytes配列の20バイトすべてを実際に使用しているわけではないという事実にまでさかのぼります。何らかの理由で、SHA1はわずか4バイトであると考えられます。

これを確認するために、私はこの小さなプログラムを作成しました。

そしてこれはhashLengthを出力します:4!

誰かが私が間違っていることや、SHA1が20バイト(160ビット)ではなく4バイト(32ビット)であるとMicrosoftCAPIが考える理由を説明できますか?

0 投票する
2 に答える
479 参照

c# - mscorlib を垣間見るには?

データを RSAParameters 構造体 ( RSAParameters )に読み込みたいのですが、データが正しいことを 2 回確認しました。しかし、それでも、これに対して「無効なデータ」例外が発生します。

ソース コードを調べて、_ImportKeys が例外をスローする理由を確認するにはどうすればよいですか? .dll '復号化' の経験がありません.Visual Studio 8.0 のどこかに参照するシンボルはありますか? ありがとうございました。

0 投票する
1 に答える
3048 参照

windows - CryptStringToBinaryがNULLで終了する文字列を処理していません。なんで?

このコードが機能しない理由を誰かが知っていますか?

事前にどうもありがとうございました!

トム

0 投票する
3 に答える
920 参照

c++ - RSA (PKCS 7) を使用した署名の割り当て/検証

RSA Cryptographic Messaging Operations (PKCS#7) を使用した署名の割り当て/検証のためのシンプルで高速なライブラリに関する提案はありますか?

0 投票する
2 に答える
56303 参照

java - Pythonの例と同等のJavaでHMACを生成する方法は?

Javaで Oauth を介して Twitter 承認を取得するアプリの実装を検討しています。最初のステップは、リクエスト トークンの取得です。App EngineのPython の例を次に示します。

コードをテストするために、Python を実行し、Java で出力をチェックしています。ハッシュベースのメッセージ認証コード (HMAC) を生成する Python の例を次に示します。

出力:

この例をJavaでどのように複製しますか?

Javaでの HMACの例を見てきました。

javax.crypto.Macを使用していますが、すべて問題ありません。ただし、SecretKeyコンストラクターはバイトとアルゴリズムを使用します。

Python の例のアルゴリズムは何ですか? アルゴリズムなしでJava秘密鍵を作成するにはどうすればよいですか?

0 投票する
1 に答える
1436 参照

c# - C# で Win32 API を使用して、Diffie Hellman キー交換を実行しようとしています。

古い CAPI または新しい CNG ベースの Diffie-Hellman アルゴリズムを切り替えるコードを作成しようとしています。

(ドキュメントにもかかわらず、CNG の一部としての新しい ECC ベースの DH アルゴリズムは、Windows XP ではサポートされていません)。

とにかく、次のように Win32 CAPI の公開を開始しました。

そして、これの上に .NET DH クラスの構築を開始しました。

私はこのドキュメントから作業しています

ただし、従う必要があるプロセスが何であるかがわからないことに気づきました。私が「公開鍵」と呼んでいるものは、おそらくそうではありません!

そのため、CAPI を使用して DH 鍵交換を実行する方法についてのステップバイステップのガイドは大歓迎です!

ありがとう。

0 投票する
1 に答える
242 参照

encryption - 証明書リクエストの送信-ドメイン外

ドメイン外の認証局にPKCS#10証明書要求を送信する必要があります。MSDNのこの記事はICertRequest2、 COMオブジェクトを使用してネットワーク内で証明書要求を送信する方法を示しています。

どこ

私の質問は、ドメイン外のクライアントからプログラムでリクエストを送信するにはどうすればよいですか。

自動化されたプロセスである必要があるため、MicrosoftWeb登録ページを使用したくありません。

私のCAは2003Enterpriseで、クライアントはXPSP3です。

何かアイデアはありますか?

ありがとう

0 投票する
1 に答える
718 参照

c# - CryptGetKeyParam の呼び出し時に例外を取得する

CryptoAPI (CAPI) を使用して Diffie Hellman Key Exchange を実行しようとしています。MSDN ドキュメントを使用しています。

最初の呼び出し CryptGetKeyParam は完全に機能します。つまり、g のサイズを 64 として正常に返します。

次に、コードは最後の行で失敗します。これは、res = true を使用して (その例の場合のように) g バッファーに何も返さないか、次の呼び出しを使用すると AccessViolationException が発生します。

はい、P\Invoke メソッドをオーバーロードしました。

これに関する考え/アイデアはありますか?

*興味深いことに、私は完全な Diffie Hellman Key Exchange を機能させることができました。つまり、2 つの当事者間で同じ秘密 (s1) の合意に成功しました。ただし、これは事前定義された P および G パラメータを使用したものです。導出されたシークレットがすべてのキー交換で同じであり、X が一貫していたことを意味するため、何かが正しくないように思われたため、コードを作り直しています。(つまり、Bob と Alice は毎回 s1 に同意した!?) - ここでも、KP_KEYLEN を使用するときにセッション キーのサイズを特定できなかったため、CryptGetKeyParam で問題が発生しました?! *