問題タブ [crypto++]
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.
c++ - Crypto++ dll の 64 ビット バージョンをビルドするにはどうすればよいですか?
現在、crypto++ ライブラリを ac# アプリに実装する作業を行っています。32ビットですべて正常に動作しています。ただし、64 ビットで c++ DLL をビルドしようとすると、次のエラーが発生しました。
エラー 1 エラー PRJ0019: ツールが「カスタム ビルド ステップの実行」からエラー コードを返しました
次に、プロジェクト設定をデフォルトのマルチバイトから Unicode でビルドするように変更し、エラーなしでビルドできるようにしました。ただし、 を使用すると、安全性チェックに失敗しGetPowerUpSelfTestStatus()
ます。
私はこれをググってみましたが、どうやらこれは珍しい問題ではないようです。しかし、誰も解決策を見つけていないようで、少なくとも共有していません。
私に何ができる?
c++ - Crypto++ を使用して ZIP ファイルを解析するにはどうすればよいですか?
暗号++が含まれています
gzip (RFC 1952) および zlib (RFC 1950) 形式のサポートによる DEFLATE (RFC 1951) 圧縮/解凍
、しかし、それをどのように ZIP ファイルの読み取りに変換できるかわかりません。(私は独自の ZIP トラバース ロジックを実装することを嫌いませんが、もちろん、ライブラリに既にそれが組み込まれている場合は、複製したくありません)。
ライブラリがそのままでこの機能を提供しない場合、(圧縮/解凍ステップを実装するために) zlib および gzip ビットにどのようにアクセスしますか?
openssl - crypto++ を使用して、openssl で生成されたデータ署名を検証します
Pythonで実行されているサーバーがあり、m2cryptoを使用してメッセージsha256ダイジェストに署名しています。openssl CLIによって生成された公開および秘密RSAキーを使用しています。サーバー側では、すべてが問題ありません
Pythonコード:
privateKey = M2Crypto.RSA.load_key (sys.argv[2])
signedDigest = privateKey.sign (ダイジェスト、「sha256」)
署名が適切であることを再確認します。
pubKey = M2Crypto.RSA.load_pub_key("key.pub.pem")
if pubKey.verify(digest, signedDigest, 'sha256') (など....)
署名済みの sha256 ダイジェストをファイルに保存し、元のメッセージと共にクライアントに送信します。
クライアント側では、c++ vc6 で実行され、署名済みの sha256 ダイジェスト (バイナリとして) と署名済みのメッセージを読み込みます。ここでの目的は、署名付きの sha256 と共にメッセージを検証することです。静的リンクとして cryptopp を使用していますが、sha256 を計算し、Python の sha256 と比較して同じ結果を得ることができるため、正常に動作することがわかっています。コードは次のとおりです。
RSA::公開鍵 pubKey;
pubKey.Load( FileSource(LicenseControl::pubKeyPath, true));
RSASS< PKCS1v15, SHA >::検証者 検証者(pubKey);
//shaDigest は新しく計算された sha256、signatureByte はサーバーから受信したメッセージの署名です。
result = verifier.VerifyMessage( shaDigest, CryptoPP::SHA256::DIGESTSIZE, signatureByte, 512);
これはコンパイルして実行しますが、常に false を返します。署名が有効であることを確認するために、openssl CLI を直接使用して検証しました (m2crypto python ラッパー経由ではありません)。
openssl dgst -sha256 -verify key.pub.pem -signature sign original_file
検証済み OK
これにより、署名された sha256 ダイジェストが問題なく、公開鍵を使用してメッセージを正常に検証できることが確認されます。DER および PEM 形式を認識しています (openssl には PEM、cryptop には DER を使用)。したがって、公開鍵は正しいと思います。今私の問題は、暗号化ライブラリを使用して署名を検証する方法です??? 私はドキュメントを読みましたが、何日も経った後でも、まだ中国語のように見えます. 私は次のようなことを試しました
RSASS< PSSR、SHA >::Verifier verifier(pubKey);
PSSR を使用して Python コードで暗号化しますが、運はありません...署名された sha256 ダイジェストを公開鍵でのみ復号化し、受信ファイルから計算された新しい sha256 ダイジェストと比較することを検討しています。しかし、その単純でさえ、ドキュメントには見つかりませんでした...ベリファイアを適切に使用する方法はありますか?
公開鍵を使用して復号化する方法は? 前の質問が解決できない場合
c++ - 復号化メモリの問題
最近、AES256を使用してデータを暗号化/復号化するサーバーを作成していますが、正しく送信されるまでに時間がかかりました。しかし、今はメモリに問題があると思います。「hello」という単語を送信すると正常に復号化され、「helloo」を送信すると正常に復号化されますが、それより短いものを送信すると後の「helloo」よりも、復号化中にエラーが発生し、受信した暗号化された文字列を印刷すると、本来あるべきものに加えて古い文字列の追加の長さが得られます。
例えば
コード:
c++ - 入力と出力として文字列を使用して、Crypto++ で SHA256 ハッシュを生成しますか?
Crypto++ を使用して std::string から SHA256 ハッシュを生成し、std::string を出力する方法の例が必要です。私はそれを理解できないようです。私が試したことはすべて、無効な出力をもたらします。
interjayの回答後の新しいコードは次のとおりです。
SHA256("A") の出力。は
これを読み取り可能な形式に変換するにはどうすればよいですか?
interjay's answer のおかげで、最終的なハッシュを生成できました。
c++ - Base64Decode: データの取得方法
これは簡単な質問のように思えますが、crypto++ はファンキーで「できるだけ鈍い」方法で設計されているように見えるので、疑問に思っています...
CryptoPP::Base64Decode オブジェクトからバイナリ データを取得するにはどうすればよいですか? ファイルに書き込んだり、他の方法でエンコードしたりしたくないと仮定すると、実際のバイナリデータを取得するにはどうすればよいですか?
編集:それを理解しました。それを閉じる/削除する方法がわからない、誰か? 今ここで何をするのが適切ですか?
openssl - crypto++でパスワードを使用してPKCS8DER暗号化秘密鍵を復号化する方法
暗号化された秘密鍵を使用してメッセージに署名しようとしています。もちろんパスワードを持っているので、署名に使用できるように鍵を復号化しようとしています。
私はC++ライブラリcrypto++
を使用しています。これは、ファイルからキーを読み取るために使用しようとしているコードです。
これを行うCryptoPP::DefaultDecryptor::KeyBadErr
と、次のコマンドラインでopensslを使用してキーを復号化できたため、正しいパスワードを使用していることがわかります。
これは私の最初の投稿です。質問をするためにすべてのルールに従っているかどうかはわかりませんが、ヘルプやヒントをいただければ幸いです。
よろしく、
重い
c++ - Visual Studio2010にCrypto++をインストールするにはどうすればよいですか?
http://www.cryptopp.com/#download 5.6.1をダウンロードしましたが、現時点でそれを行う手がかりはありません。私は完全な初心者であり、良い指示が必要です。ありがとう。
c++ - 使用すべき暗号化方法に関するアドバイス
では、現在のプロジェクトでどの暗号化方式を使用すべきかについてアドバイスが必要です。ここでのこの主題に関するすべての質問は、ネットワークを構築し、暗号化されたデータをあるマシンから別のマシンに渡すことに関するものです。
システムがどのように機能するかの簡単な要約は次のとおりです。
テキスト形式のテーブルに保持されているデータがいくつかあります。次に、ツールを使用してこのデータを解析し、datファイルにシリアル化します。これは正常に機能しますが、アプリケーションとともに公共の場所に保存されるため、このデータを暗号化する必要があります。データは、アプリケーションによって読み取られるだけの場所には送信されません。暗号化する必要があるので、悪意のある人の手に渡った場合、データを読み取ることができなくなります。
暗号化にcrypto++ライブラリを使用していますが、ほとんどの種類の暗号化アルゴリズムを実行できることを読みました。ただし、ほとんどのアルゴリズムは公開鍵と秘密鍵を使用してデータを暗号化/復号化することに気づきました。これは、私には直感に反しているように見えるデータとともに秘密鍵を保存する必要があることを意味します。データに秘密鍵を保存せずに暗号化を実行する方法はありますか?
c++ - C2440 'initializing': Microsoft VS 2010 ユーティリティ ファイルで int を unsigned char* に変換できません
VS 2010 C++ プロジェクトをコンパイルすると、ファイル c:\program files\microsoft visual studio 10.0\vc\include\utility で次の箇所でエラーが発生します
エラーの後に別のエラー C2439 'std::_Pair_base..::first element could not be convert' が続きます
(すべてのエラーはドイツ語から翻訳されているため、英語では少し異なるように聞こえる場合があります)
VS 2010 で AxCrypt プロジェクトをコンパイルしようとしていますが、プロジェクト ファイルは VS 2008 から自動的に変換されています (ただし、そこで動作するかどうかはわかりません。VS 2010 しかありません)。