問題タブ [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.
iphone - app エンジンで pycrypto を使用して iPhone SDK で crypto++ を使用する
crypto++ を使用して http リクエストを暗号化し、アプリ エンジン サーバー側で pycrypto を使用して復号化しようとしています。Arc4 暗号化を使用して、iPhone 側で正常に暗号化および復号化できますが、アプリ エンジンで復号化しようとすると、結果が文字化けします。クライアントで暗号化した後の暗号文は、ログを確認したときにサーバーで受信したテキストと同じなので、視覚的に同じである場合、なぜ復号化に失敗するのでしょうか?
NSStringのエンコーディングと関係があるのではないかと思いました.asciiで暗号をエンコードしようとしてdecrypt()が失敗するのを避けるために、復号化する前にサーバー側の暗号でencode()を呼び出す必要があることがわかりました. これについて少し掘り下げた別の投稿があります。誰でもアドバイスを提供できますか?
crypto++ / Google App Engine を使用した pycrypto
更新: C で Crypto++ を使用して暗号化した結果の暗号文は、Python で PyCrypto を使用して暗号化した結果の暗号文と同じではないことを発見しました。キーの初期化で何か間違っている可能性がありますか? 私は次のようなことをします:
C.そしてPythonで私は:
% エンコードされた結果の暗号は、C と Python では異なります。C では、キー長の 2 番目のパラメーターを渡すことができることに気付きました。これは、「a」の場合は 1 であると推測され、パラメーターを指定しない場合とは異なる暗号になります。ただし、% でエンコードされた結果は、依然として python エンコーディングとは異なります。
おそらく私の初期化に何か問題があるように見えますか?
c++ - 私のcrypto ++復号化ファイルが16バイト短い理由を誰か説明できますか?
AES で暗号化されたテキストをstd::istream
パーサー コンポーネントにフィードするためにstd::streambuf
、バニラの crypto++ 暗号化/復号化をラップする実装を作成しようとしています。
このmain()
関数は次の関数を呼び出して、ラッパーとバニラの実装を比較します。
EncryptFile()
- 私の streambuf 実装を使用してファイルを暗号化するDecryptFile()
- 私の streambuf 実装を使用してファイルを復号化しますEncryptFileVanilla()
- バニラ暗号++を使用してファイルを暗号化DecryptFileVanilla()
-バニラ暗号++を使用してファイルを復号化
EncryptFile()
問題は、とによって作成された暗号化されたファイルEncryptFileVanilla()
が同一であることです。によって作成された復号化されたファイルは、 によって作成されたファイルよりDecryptFile()
も 16 バイト短いため、正しくありませんDecryptFileVanilla()
。おそらく偶然ではなく、ブロック サイズも 16 です。
問題は にあるに違いないと思いますがCryptStreamBuffer::GetNextChar()
、私はそれと crypto++ のドキュメントを何時間も見つめてきました。
誰か助けて/説明できますか?
私の実装がいかに粗雑であるか素朴であるかについての他のコメントstd::streambuf
も大歓迎です;-)
ありがとう、
トム
cryptography - Crypto ++ AES復号化方法は?
そこにcrypto++へのnoobガイドはほとんどありません。または、とにかく私が見つけたものはありません。私がやりたいのは、別のAES暗号化装置で生成したucharの配列を復号化することです。どこから始めますか?私はライブラリを構築し、グランドをリンクしています。何かを設定する必要がありますか、それとも配列で関数を呼び出すだけですか(その場合はどの関数を呼び出しますか)?
私は本当にこのことを知っている誰かからの助けに感謝したいと思います。
ありがとう
c++ - C++ で 16 進数値を正しく読み書きする (CryptoPP)
AES を使用して暗号化および復号化するプログラムを実行しようとしています。
( http://www.codeproject.com/KB/security/AESProductKey.aspxから)
そのため、コメントで言及されていることを正しく実行するコードを書くことができませんでした(DMZの後、ofstreamが始まる場所)。前もって感謝します。
c++ - QString/QChar を Crypto++ で受け入れられるように変換する
ユーザーが入力した文字列を暗号化(後で復号化)するプログラムを作りたいです。これが暗号化の始まりです:
今、Crypto++で受け入れられるように変換QString
するchar*
必要があります。を返す機能があるので、それでいいstd::string
と思いました。(常に 17 バイト以上の長さ: CryptoPP では、AES 暗号化に少なくとも 17 バイトが必要です)。したがって、次のコードを使用しました。QByteArray
.data()
char *
getData
すべてがうまくいっているようです。しかし、ASCII以外の文字(ロシア語、リトアニア語など)をサポートしたいです。復号化すると、 に変わり?
ます。どうすればこれを修正できますか? わかりました、それはstd::string
それらをサポートしていません。
編集:更新されたコードは次のとおりです。
暗号化:
そして復号化:
私が見逃したバグはありますか?
aes - AES による暗号化/復号化
AESを使用してファイルを暗号化/復号化する小さなプログラムを書いています。Cryptopp ライブラリを使用しています。
いくつかのことを理解するのに助けが必要です。
ファイルを暗号化するとき、後で復号化するためにファイルの先頭に IV を書く必要がありますか?
復号化ファイルが正しかった場合、パスワードを確認したくありません。するべきか:
暗号化する前に、ファイルの先頭に何らかの文字列 (TRUE など) を配置します。復号化した後、それを確認してください。
暗号化する前にファイルの MD5 を確認してください。暗号化ファイルの先頭に配置します。復号化前に MD5 を読み取り、ファイルを復号化し、復号化されたファイルの MD5 を確認して比較します。
c++ - Crypto++ と Ruby がわずかに異なる SHA-1 ハッシュを生成するのはなぜですか?
私は 2 つの異なるライブラリを使用して、ファイル検証で使用する SHA-1 ハッシュを生成しています。Crypto++ライブラリの古いバージョンと、Ruby によって実装された Digest::SHA1 クラスです。エンコーディングの違いが原因でハッシュが一致しない例を他にも見たことがありますが、2 つのライブラリはほぼ同一のハッシュを出力しています。
たとえば、各プロセスでファイルを渡すと、次の結果が生成されます。
暗号++ 01c15e4f46d8181b984fa2a2c740f8f67130acac
ルビー: eac15e4f46d8181b984fa2a2c740f8f67130acac
ご覧のとおり、ハッシュ文字列の最初の 2 文字だけが異なっており、この動作は多くのファイルで繰り返されます。各実装のソース コードを調べましたが、一見しただけでわかった唯一の違いは、160 ビット ハッシュに使用されている 16 進数のデータです。その 16 進数がアルゴリズムでどのように使用されているのかわかりません。以前にこの問題に遭遇したことがある場合に備えて、質問する方がおそらく早いと思いました。
以下のそれぞれのライブラリからのデータを含めました。3 つのライブラリの値はそれぞれわずかに異なるため、OpenSSL の値も含めました。
暗号++:
ルビー:
OpenSSL:
ちなみに、Ruby でハッシュを生成するために使用されているコードは次のとおりです。Crypto++ 実装のソース コードにアクセスできません。
c++ - Crypto++ からランダムな出力を取得する
Crypto++ RC2 デコーダーから一見ランダムな出力が得られる理由がわかりません。インプットは常に同じですが、アウトプットは常に異なります。
windows - RSAをデコードするためのCrypto ++に代わる小さなWindows?
Crypto++ は巨大 (コンパイル済み) であり、RSA でエンコードされたブロックをデコードするための代替手段を見つけたいと考えています。
Windows 用のソリューションを探しています。
c++ - デバッグ モードではなくリリース モードでのコンパイル エラー
VS 2008 で deubg モードでコンパイルすると、すべて正常に動作します。リリース モードで同じものをコンパイルすると、すべてが機能するわけではありません。私が知る限り、インクルード ディレクトリは同じであり、追加のプリプロセッサ シンボルはありません。
何か助けはありますか?
1>zlib.cpp 1>C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\xutility(419): エラー C2664: 'CryptoPP::AllocatorWithCleanup::AllocatorWithCleanup(const CryptoPP::AllocatorWithCleanup &)' : 1> [ 1>
T=std::_Aux_cont 1> ] 1>
および 1> [ 1>
T=CryptoPP: :HuffmanDecoder::CodeInfo 1> ] 1> and 1> [ 1> T=std::_Aux_cont 1>
] 1> 理由: 'CryptoPP::AllocatorWithCleanup' から 'const CryptoPP::AllocatorWithCleanup' 1> に変換できません 1> > [ 1>
T=CryptoPP::HuffmanDecoder::CodeInfo 1> ] 1> および 1> [ 1> T=std::_Aux_cont 1>
] 1> この変換を実行できるユーザー定義変換演算子がないか、演算子を使用できません呼び出された 1> C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\xutility(417) : クラス テンプレート メンバー関数 'std::_Container_base_aux_alloc_real<_Alloc>::_Container_base_aux_alloc_real(_Alloc)' 1> をコンパイル中1> [ 1>
_Alloc=CryptoPP::AllocatorWithCleanup 1> ] 1> C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\vector(421) : クラス テンプレートのインスタンス化への参照を参照 'std::_Container_base_aux_alloc_real <_Alloc>'コンパイル中 1> with 1>
[ 1>
_Alloc=CryptoPP::AllocatorWithCleanup 1> ] 1> C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\vector(439) : クラス テンプレートのインスタンス化への参照を参照してください 'std::_Vector_val<_Ty,_Alloc> ' コンパイル中 1> [ 1> _Ty=CryptoPP::HuffmanDecoder::CodeInfo, 1>
_Alloc=CryptoPP::AllocatorWithCleanup 1> ] 1>
C:\myproject\sshlib\zinflate.h(79) : 参照を参照クラス テンプレートのインスタンス化 'std::vector<_Ty,_Ax>' は 1>
[ 1>
_Ty=CryptoPP::HuffmanDecoder::CodeInfo, 1>
_Ax=CryptoPP::AllocatorWithCleanup 1> ] 1>zinflate でコンパイルされます。 cpp
最終的に指すコード行は次のとおりです。
編集:詳細:
このエラーは、プリプロセッサに _DEBUG ではなく NDEBUG が含まれている場合に発生します。リリース構成を変更して _DEBUG を無効にすると、コンパイルされます。なんで?