問題タブ [ecb]
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.
php - TripleDes、PKCS7、および ECB を使用した PHP 暗号化/復号化
暗号化機能は正常に動作していますが、復号化機能で適切な出力を得る方法がわかりません。
ここに私の暗号化機能があります:
ここに私の復号化関数があります:
現在、 のキーを使用しており、test
を暗号化しようとしてい1234567
ます。探している暗号化から base64 出力を取得しますが、復号化しようとすると何も返されません (空白の領域)。
私は暗号化/復号化に精通していないので、どんな助けでも大歓迎です!!
php - aes-256-ecbで暗号化されたas3crypto文字列で復号化する方法は?
文字列はここのようにphpで暗号化されます。これにより、パラメータRijndael-256、ECB、およびBase64を使用して復号化できます。しかし、ActionScriptコードでは復号化できません。
UPD:
「復号化できない」とは、プレーンテキストが間違っていることを意味します。
PHPでは、プレーンテキストは最初にaes-256-ecbによって暗号化されます。次に、Base64によってエンコードされます。ActionScriptでは、これらの手順は逆の順序で実行されます。
UPD2:
エンコード/デコードのテスト:
で停止した後の出力cihper.encrypt(data)
は次のとおりです。
UPD3:
PKCS5パディングで正しく機能します。
出力は次のとおりです。
UPD4:
(ここにあるように)phpから取得したデータの場合、PKCS5パディングが実行されているコードはここで停止します。また、Nullパディングを使用すると、停止しませんが、復号化されたデータは間違っています。
rsa - 電子コードブック (ECB) の暗号連鎖
学校の課題として ECB (Electronic Code Book) を使用して RSA アルゴリズムを実装する必要があります。私は ECB が悪いことを知っており、実生活でそのようなものを使用するべきではありませんが、ここでは他に選択肢がありません (最終的には CBC に変更し、次に AES に移行しますが、現時点では ECB を使用する必要があります)。
暗号化されたブロックの連鎖に関する問題に遭遇しました。サイズが 256 ビットのキーがあり、その結果、各ブロック サイズを 256 ビット (ブロック サイズ = キー サイズ) に設定したとします。また、サイズが小さい場合に備えて、最後のブロックを必ずパディングします。問題は、暗号化されたブロックの結果サイズがさまざまであるため、結果をチェーンする方法がわからないため、データを復号化すると、ブロックの開始時刻とブロックの終了時刻が正確にわかります。そのようなイベントで行う一般的なことは何ですか? 各ブロック間に何らかの区切り文字を入れることを考えましたが、それはお粗末な解決策だと思います。
php - PHP は、AES、ECB モード ブロック、および PKCS5Padding を使用して対称キーを生成します。
ECB モード ブロックの標準 AES と PKCS5Padding を使用して対称キーを生成する必要がありますが、実行できません。
検索中に、上記のこの条件で何かを暗号化する関数しか見つかりませんでした。しかし、私はこれを望んでいません。対称鍵を生成したい。
Web サービスと通信できるようにする必要があり、暗号化の一部であるため、これが必要です。
私はphpseclibを見てきましたが、ライブラリも対称鍵を生成しません。
javascript - crypto-js を使用して AES ECB を復号化する方法
暗号化されたデータをフラッシュ (クライアント側) からサーバー側の javascript (asp で jscript として実行) に送信しようとしています。
いくつかの JavaScript Aes ライブラリがありますが、それらは事実上文書化されていません。私は crypto-js を試していますが、コードを動作させることができません。以下の例では、空の出力が生成されます。「6bc1bee22e409f96e93d7e117393172a」が生成されるはずです。
http://www.inconteam.com/software-development/41-encryption/55-aes-test-vectorsから文書化された作業キーと暗号化されたデータを取得しました
サーバーはクライアントで使用されるIVまたはソルトを認識しないため、IVまたはソルトを必要としない唯一のバージョンであるため、ECBを使用しているため、データを復号化できません。
上記がデータの復号化に失敗した理由、またはドキュメントの場所を知っている人はいますか?
更新: 数時間の試行錯誤の後、出力を生成する組み合わせを思いつきました: 7c121d95a84573b6120ada2ffff1ce3118561eba40555c0b ただし、これはまだ正しくありません。これを生成するために行われた変更は次のとおりです。
つまり、データを 16 進数の文字列として渡しましたが、これは正しくありませんが、少なくとも出力は生成されます。
次の問題はパディングの問題です。クライアントでは、NONE と PKCS#5 の 2 つのパディング戦略のみを提供する AS3 hurlant ライブラリを使用しています。crypto-js で利用可能な戦略は次のとおりです。
これは、2 つのライブラリ間でデータを復号化する機会がなくなるということですか? 以前は、独自のパディング ハック (AS3 と Java の間) を作成して末尾のデータを追加または削除する必要がありましたが、これにはバイナリ データで数日間の試行錯誤が必要でした。クライアントから単一の暗号化された文字列を送信するより簡単な方法が必要です。サーバーへ。
SSL はオプションではありません。クライアント ユーザーは単純に Charles プロキシなどを使用して、暗号化されていないデータを表示して改ざんすることができます。
javascript - Pkcs5 パディングを使用した ECB モードの Javascript AES
Pkcs5パディングスキームを使用してECBモードでAESを使用することはjavascriptで可能ですか?
ECB モードを使用したい理由は、クライアントが望んでいるためです。
java - ECB モードでの RSA 暗号化
コードに問題があります。
私がやろうとしているのは、ECB モードを使用してファイルを暗号化することです (つまり、次のブロックにチェーンせずにテキストのブロックを暗号化します)。
完全に機能することもありますが、機能しないこともあります。問題は、128 バイトのデータを暗号化し、129 バイトを書き込むときに発生します。初めてそれを行うまでは完全に機能しますが、その後、復号化は1バイトずれて、すべてが台無しになります。私がこれを知っているのは、うまくいかない場合、cipher (行 88、バイト配列) の長さが 128 ではなく 129 であり、ファイルに書き込まれることがわかるからです。
暗号化: testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttest
出力: testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttest(500 バイトのごちゃまぜデータ)
コード全体を添付しました。簡単に実行するために、暗号化の直後に標準出力に生成する復号化を有効にしました。
-k key (key.public と key.private を生成します) -e key.public -i input -o output (ファイル入力を暗号化して出力に保存し、そのファイルを読み取り、復号化して、標準出力)。
どんな助けでも大歓迎です!
c# - BouncyCastle の Blowfish ECB モード
このスレッドは、ECB モードがいかに悪いか、変更する必要があることを議論するためのものではありませんが、「getInstance」を使用できる Java を除いて、BouncyCastle はこのモードを実際にはサポートしていません。私が使用しているコードはこれで、最初のブロック (0x1000 バイト) のみを正しく復号化します。
ここでの質問は、ライブラリで ECB モードを使用する方法があるか、または使用できる他のクラスがあるかということだと思います。
c++ - C/C++ と openssl を使用して単一の AES-128-ECB ブロックを処理する
AES-128-ECB暗号を使用して、単一の 16 バイトのデータ ブロックをエンコードおよびデコードしたいと考えています。最初に、キーとして ASCII 16 文字の文字列「a_key_simple_key」を使用し、メッセージとして ASCII 16 文字の文字列「1234567890uvwxyz」を使用して、 opensslコマンド ライン ユーティリティを介して実行しました。コマンド ライン ユーティリティは、16 進数の文字列「142f 7d9e ad8c 0682 30e0 f165 a52f f789」を暗号化されたメッセージとして出力し、元のメッセージに正常にデコードしました。以下を参照してください。
これで、同じことを行う短い C++ プログラムを作成できました。うまくいきません。2 つの問題があります。
- エンコード部分の出力の長さは 16 バイトではなく 32 バイトです (これらの 32 バイトの前半は、まさに私が期待していた暗号化されたテキストです)
- ファイナライズ手順でデコード部分が失敗し、次の openssl メッセージが表示されます。
エラー:06065064:デジタル エンベロープ ルーチン:EVP_DecryptFinal_ex:不正な復号化
両方の問題が何らかの形でパディングに関連していると思われますが、正確に何が間違っているのか、それを修正する方法がわかりません。プログラムの完全な出力は次のとおりです。
そして、これがC++プログラム自体です(行番号付き):