問題タブ [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++ - RSASSA_PKCS1v15_SHA_Signer および PK_SignatureScheme::KeyTooShort 例外
初めて Crypto++ を使用していますが、問題が発生しています。これが C# では (同じキーで) 機能するのに、Crypto++ では機能しないのはなぜですか? C# と C++ のコードを以下に示します。
C# コード(これは動作します!) :
さて、動作しない私のC++コード:
私が知っていることに基づいて、Crypto ++の「RSASSA_PKCS1v15_SHA_Signer」は、C#の「RSAPKCS1SignatureFormatter」と同等であり、ハッシュアルゴリズムをSHA1に設定したいものです。
スローされるエラーは次のとおりです。
proj.exe の 0x7646B9BC で未処理の例外: Microsoft C++ 例外: > CryptoPP::PK_SignatureScheme::KeyTooShort のメモリ位置 0x0040EF18。
助けてくれてありがとう、Hetelek。
php - Crypto++ から PHP への mcrypt が機能しない
Crypto++ を使用して暗号化されたデータを PHP サイトに送信する C++ アプリケーションがあります。ただし、データが PHP 側に到達すると、データが適切に復号化されません。
C++ / Crypto++ コード:
PHP コード:
注: ECB が暗号化モードとして不適切な選択であることは承知していますが、最初に IV の奇妙な点を追加せずにこれを機能させ、次に問題を複雑にしたいと考えています。
php - PHP Mcrypt が投稿メッセージのガベージを返すのはなぜですか?
hereと同じ (基本的な) コードを使用して MCRYPT_RIJNDAEL_128 に切り替えると、php mcrypt_decrypt から正しいデータを取得できるようになりました。
たとえば、以下は復号化のリクエストから返されました。
これはパディングの問題だと思いますが、文字列を正しい長さにパディングしても、ガベージが発生することがあり、通常はパディングが必要な文字列が正しく返されることがあります。
何が起きてる?
c++ - Crypto++ は TOFB-I をサポートしていますか?
TOFB-I (TDEA 出力フィードバック - インターリーブ) を使用して、他の誰かによって暗号化されたデータを復号化する C++ アプリケーションを開発しています。これを行うには、Crypto++ ライブラリを使用しています。
残念ながら、復号化の結果は機能していないようです。最初のバイトは正しく復号化され、残りは意味のないデータです。Linux コマンド ライン ツール OpenSSL で再確認したところ、まったく同じ結果が得られました。したがって、最初の IV は問題なく動作するが、フィードバックで何か問題が発生するように、間違ったフィードバックを使用して復号化アルゴリズムを適用していると信じる傾向があります。
私の質問は次のとおりです: DES_OFB モードのインターリーブされたバリアントを適用するにはどうすればよいですか?
これについては、Crypto++ または OpenSSL のドキュメントで何も見つかりませんでした。
encryption - Crypto++ を使用した AES の例
暗号化技術の基礎とライブラリの使用法を教える優れたC++ AES コード サンプル/チュートリアルをインターネットで検索してきましたが、これまでのところまともな資料を入手することができませんでした。
良い: わかりやすい (外出先での学習の基本のみ)。
compilation - Visual C++ 2010 Express を使用して cryptopp をコンパイルします。
Visual C++ 2010 Express を使用して cryptopp (32 ビット) をコンパイルする必要があります。5.6.1 バージョンをダウンロードし、crypttest.sln を開きました。VS は何らかの変換を行う必要がありましたが、失敗しました。*.vcproj ファイルには x64 プラットフォームが指定されていますが、これはどういうわけか失敗します。.vcproj ファイルを微調整して x64 を削除しようとしましたが、奇妙なエラーで失敗します。
静的ライブラリを別のモードでコンパイルする必要があります (別の dll にリンクする必要があります) が、Visual Studio に読み込む方法さえわかりません。
c - C での Crypto++ の同等物
暗号プリミティブ用のオープンソース ANSI-C ライブラリに相当するものはありますか。C++ 用の Crypto++ については知っていますが、C 用のものは見つかりませんでした
ほとんどの場合、SHA-1、SHA-2、AES、RSA が必要です
java - ECIES ECP CryptoPP を JAVA に変換する
202 バイトのキーがあり、それを使用してバイナリ ファイルを復号化します。
私はこれに jsafejce を使用しようとしました:
と
しかし、最初にブロックエラーが発生し、16 で割る必要があり、2 番目に mac チェックエラーが発生します。
誰か提案はありますか?
cryptography - C#SHA256Managedとcryptopp::SHA256の違いは何ですか
MSSHA256Managed関数をcryptopp::SHA256に置き換えようとしています。これがC#コードです
出力結果:
キーシード0x5d、0x50,0x68,0xbe、0xc9,0xb3,0x84,0xff、0x60,0x44,0x86,0x71,0x59,0xf1,0x6d、0x6b、0x75,0x55,0x44,0xfc、0xd5,0x11,069 0xb1,0xac、0xc4,0x27,0x8e、0x88
キーID0x39,0x68,0xe1,0xb6,0xbd、0xee、0xf6,0x4f、0xab、0x76,0x8d、0x48,0x2d、0x8d、0x2b、0x6a、
sha_a:32 0x7b、0xec、0x8f、0x1b、0x60,0x4e、0xb4,0xab、0x3b、0xb、0xbd、0xb8,0x71,0xd6,0xba、0x71,0xb1,0x26,0x41,0x7d、0x99,0 、0x64,0x76,0x15,0x23,0x1b、0xab、0x76,0x62、
Crypto++による置換関数は次のとおりです。
ただし、出力ハッシュ値はDB 36 C9 F6 F7 29 6D 6F 52 21 DA 9F 55 1D AE BC 3E 5A 15 DF E1 37 07 EE 8F BC 73 61 5F D6 E1 C3 C#によるsha_aの結果とは異なります。
MSDNおよびCryptoppリファレンスから、SHA256Managed::TransformBlockおよびSHA256Managed::TransformFinalBlockは、Cryptopp::UpdateおよびCryptopp::Finalで同じことを行いました。
SHA256Managedとcryptopp::SHA256の違いは何がこの結果を引き起こしますか?
c++ - 無効なブロック パディングが 2 キー トリプル DES を復号化しようとしています
C++ で crypto++ を使用して 2 キー トリプル DES を実装しようとしています。
私の実装は、ここにある crypto++ wiki のコードに基づいています。
wiki のコードは正しくビルドされます。サンプルプログラムを実行すると、正しく暗号化および復号化されていることがわかります。
私の実装では、次のことをしようとしています。
ユーザーは「desimp.exe encrypt test.txt」を実行できます。プログラムは test.txt を暗号化し、 test.txt.des という名前の暗号化ファイルを出力します。これは正常に動作しているようです。
ユーザーが "desimp.exe decrypt test.txt.des" を実行すると、プログラムは test.txt.des を復号化し、復号化されたテキストをファイル "decrypted.txt" に出力します。これを機能させることはできません。表示されるエラーは、「StreamTransformationFilter: 無効な PKCS #7 ブロック パディングが見つかりました」です。
暗号化時にもivのデータをファイルに保存する必要があると思います。これは正しいです?私はこれを試してみましたが、正しくファイルに保存されたivを取得できると思います-しかし、復号化に使用されるivを読み込むには、配列として読み込む必要があると思います8 バイト。iv を保存しようとすると、test.txt.iv のファイル サイズが 21 バイトになります。これが正しいアプローチである場合、どのように進めればよいかわかりません。これが間違ったアプローチである場合は、別の方法で何をする必要があるかを知りたいです。コードは次のとおりです。