問題タブ [evp-cipher]
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 - EVP_des_ofb()、openSSL、C によるテキストの暗号化と復号化による問題
OpenSSL ライブラリを使用して、DES-ofb (libcrypto) で txt ファイルを暗号化および復号化する必要があります。キーと初期化ベクトルは、1 つの bin.file(key+iv) で指定されます。しかし、EVP_DecryptUpdate() による復号化の後、復号化されたテキストとプレーン テキストはまったく似ていません。
だから私はplain.txt 8バイトと「keyandIV.bin」ファイルを読みました。keyandIVbuffer から最初の 8 バイトを DES の KEY として取得し、残りを IV として取得しました。したがって、8 バイトのキーと 8 バイトの IV があり、両方の末尾に '\0' が追加されています (ここで '\0' は必要ですか? キーの長さは 64 ビットまたは 56 ビットでなければなりませんか?)。
これは、DES ofb を使用した暗号化の私のコードです。
暗号化されたバッファを取得して復号化するよりも、次のようにします。
私は間違いなくDESの理解に問題があります。1 つのファイルからキーと IV を作成することで、何か問題があったのかもしれません。多くの例を見てきましたが、自分のプログラムで何が間違っていたのかまだわかりません。
c++ - ファイルの復号化時に OpenSSL EVP_DecryptFinal_ex が「間違った最終ブロック長」エラーを返す
このアルゴリズムを使用してEVP Symmetric Encryption and Decryption
、テキスト ファイルを暗号化および復号化しています。
暗号化作業ファイル、新しい暗号化ファイルが生成されますが、ファイルを復号化しようとするEVP_DecryptFinal_ex
と、最初に呼び出されたときに常にクラッシュします。
2 つの Visual Studio プロジェクトを使用しています。1 つは暗号化用、もう 1 つは復号化用です。
私が使用しているライブラリは、DEBUG モードでビルドされていると思われます (.pdb ファイルがあるため)。それで、私のプロジェクトもビルドされます。(リリース モードを選択すると、コンパイラは openssl インクルード ヘッダーを見つけることができなくなります)。
これは私が得るエラーです:
私はC++ 11バージョンを使用しています。これが私のコードです:
また、パディングの問題である可能性があることも読みましたが、そうであるかどうか、どうすればよいかわかりません。私は暗号化が得意ではありません。
さらに進める方法についての指針は大歓迎です。さらに情報が必要な場合はお知らせください。
c - OpenSSL EVP C ライブラリと Python で生成された暗号文に違いがあるのはなぜですか?
生成された暗号テキストに違いが見られます(復号化も失敗しますが、それは別の話です-最初に暗号化された出力が正しく/期待どおりである必要があります)。Python (Pycryptodome) を使用して暗号化を実行したところ、タグと暗号化されたデータで異なる結果が得られました。OpenSSL ライブラリに必要なものを想定する際に、どこが間違っているのかわかりません。
わかりやすくするために、AES-256 GCM モードを使用しています。
このサイトも使用して、オンザフライで暗号化されたデータを生成しようとしましたが、aad の追加は許可されていませんが、暗号テキストは Python スクリプトで取得したものと一致します。
Cコード
追加の C コード
テスト用の Python コード
C からの暗号テキスト出力が次のように表示されます 。
しかし、Python のものは 522dc1f099566d07f47f37a32a84427d643a8cdcbfe5c0c97598a2bd2555d1aa8cb08e48590dbb3da7b08b1056828838c5f61e6393ba7a0abcc9f662 です。