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

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

encryption - OpenSSL EVP 対称 EVP_aes_256_cbc と同等になる

EVP_aes_256_cbc暗号化されたレガシーデータとRSA 公開鍵を復号化する Go スクリプトを作成しています。

C では、これは次のようになります。

Go にはevp_keyとのivバイト配列に相当するものがありますが、OpenSSL で EVP がどのように機能するかはわかりません (私は C の能力がかなりありますが、この復号化が行われるプロセスを把握することはできません)。 OpenSSL ソースを参照してください。)

Go では、ここまで到達できます。

そして、ここで私は迷子になります。と がありevpKeyますpKeyが、ここからデータを復号化する方法がわかりません。OpenSSL はRSA_decrypt_oldそのようなものを使用していますが、それが実際に何を意味するのかを追跡することはできません。

Go に相当するものはありますか? それとも、あまりにも高価なcgoパッケージを破棄して袖をまくる必要がありますか?

更新 (解決):

Go で EVP の動作を再現しようとしている人、または EVP が正確にどのように機能するのか疑問に思っている人のために、以下に内訳を示します。C(またはJavaまたはその他のOpenSSL実装)が次のような暗号化を行っていることがわかっている場合:

「シール」は、実際には RSA 公開鍵で鍵を暗号化するだけです。

Go でそのようなものを復号化するには:

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

encryption - 16 の倍数ではないサイズの aad に openssl で EVP_aes_128_gcm を使用する

GMAC のインターフェイスとして openssl EVP (EVP_aes_128_gcm) を使用しようとしています。NIST の CAVP GCM テスト ベクトル ( http://csrc.nist.gov/groups/STM/cavp/documents/mac/gcmtestvectors.zip ) に対してコードをテストしています。問題は、aad サイズが 16 の倍数の場合、コードが正しい GMAC タグを与えることができることです。しかし、サイズが 16 の倍数でない場合、結果は間違っています。何が問題なのですか?

コードは次のとおりです。

テスト ベクトル (コードのコメント セクション) の場合:

出力がおかしい…

テスト ベクトルの場合:

出力は正しいです:

私が使用しているバージョンは次のとおりです。 OpenSSL 1.0.1 2012 年 3 月 14 日

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

c - openssl evp aes_256_ctr() モードでの暗号化中に生成された無効な文字

私の考えは、クライアントサーバーモデルでファイル暗号化を行うことであり、暗号化の目的でopenssl evpを使用しています。暗号文をテキスト ファイルに保存し、クライアントに送信する必要があります。しかし、ファイルに保存できない暗号文に無効な文字が存在するため、これを行うことができません。

これは暗号化のための私のコードです:

このリンクを参照して、復号化を伴う無効な文字の問題が報告され、解決されました。

openssl evp api (aes256cbc) を使用したファイルの暗号化に関する問題

誰かがここで私を助けてくれることを願っています。

前もって感謝します。

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

encryption - AES_* 関数と EVP_* 関数を使用した暗号化

AES_*openssl ( ) 関数を使用して暗号化されたデータがあります。このコードを更新して、新しい ( EVP_*) 関数を使用するようにします。ただし、古いコードを使用して暗号化されたデータを復号化できるはずです。

古いコードと新しいコードの両方を下に貼り付けました。暗号化/復号化されたコンテンツが異なります。つまり、それらを同じ意味で使用することはできません。これは、古いコードを使用して復号化してから再暗号化することなく、コードをアップグレードできないことを意味します。

どちらの場合も派生が同じにEVP_BytesToKeyなるように、パラメーターの値はありますか。または、( ) 関数aes_keyを使用して同じことを達成する他の方法はありますか? EVP_*に対していくつかの異なる値を試しdigestroundsを作成しようとしましiv NULLたが、実際には機能しませんでした。つまり、古い方法と同じ出力が得られません。

AES_*関数を使用したコード

EVP_*関数を使用したコード。(暗号化コードは以下にあり、復号化コードも同様です)。

ありがとう

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

gcc - Debian での EVP_idea_ecb への未定義の参照

次のコードがあります。

これは大したことではありませんが、問題なくコンパイルできるはずですが、

libssl-devがインストールされています。ここで何がうまくいかないのですか?

私のディストリビューション: x64 の Debian Jessie。

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

c - OpenSSL の ENGINE とは何ですか? また、何に使用されますか?

ENGINEOpenSSL の が何であるかについての適切な説明が見つかりません。などの関数で使用されますEVP_PKEY_CTX_new

andEVP_PKEY_CTX_newを使用して何かを暗号化/復号化する直前に使用していますが、呼び出すときにパラメーターを本当に指定する必要がありますか? OpenSSL の内部を見ると、どこでもパラメーターが null として指定されています。EVP_PKEY_encryptEVP_PKEY_decryptENGINEEVP_PKEY_CTX_new

だから私の質問は次のとおりです: ENGINEOpenSSLのは何ですか?それは何のために使用されますか?