問題タブ [mcrypt]

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 に答える
1535 参照

php - mcryptとopensslのPHPの違いは?

なぜecbモードでblowfishを使用するこれらの2つの方法が異なる出力を持っているのですか?

0 投票する
3 に答える
23060 参照

php - AES における入力と暗号文の長さの関係

最近、自分のアプリケーションで暗号化を使い始めたので、入力テキストの長さと結果の暗号文との関係に困惑していることに気づきました。暗号化を適用する前は、データベースの列のサイズを簡単に判断できました。ただし、現在は列のサイズがわずかに異なります。

2 つの質問:

  1. これは、暗号の要件に適合するように、入力のパディングが原因であると想定するのは正しいですか?
  2. 入力の最大長に基づいて暗号文の最大長を正確に予測する方法はありますか?

ボーナスポイントとして、base64でエンコードされた暗号文をvarcharに保存するか、生のバイトとして保持してvarbinaryに保存する必要がありますか? データベースにバイトを格納することに伴うリスクはありますか (パラメーター化されたクエリを使用しているため、理論的には、エスケープを誤って壊すことは問題になりません)。

ティア!

補足: 私が使用している暗号は AES/Rijndael-256 です - この関係は利用可能なアルゴリズム間で異なりますか?

0 投票する
3 に答える
1791 参照

c# - C# と PHP の復号化方法はどのように異なりますか?

C# コードをいくつか継承したので、それを PHP に移植する必要があります。ここにあります:

私のPHPコードは次のようになります。

しかし、復号化された 2 つの値は同じではなく、その理由がわかりません。ここや他の場所で同様の質問をたくさん読みましたが、私が抱えている問題を説明しているようには見えません。

復号化された PHP 文字列が復号化された C# 文字列と一致しない理由を理解する上で、何か助けていただければ幸いです。

0 投票する
2 に答える
3049 参照

php - Mac Snow Leopard Mcrypt 拡張機能

Mac OS X Snow Leopard 10.6 を実行しています。phpMyAdmin に入ろうとすると、次のエラーが発生します。

「mcrypt 拡張機能を読み込めません。PHP 構成を確認してください。」

これを修正する方法を知っている人はいますか?私はそれほど技術的ではないので、簡単な説明を歓迎します!

乾杯、マーク。

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

encryption - PHP で暗号化し、Java で復号化する

JAVA を使用してメッセージを復号化するプログラムを作成する必要があります。メッセージは、PHP に実装された Triple DES / ECB を使用して暗号化されます。アルゴリズム、モード、およびパディング スキーマでいくつかの異なる設定を試しました。正しい結果が得られません。何が欠けている?

メッセージを暗号化する PHP プログラムは次のとおりです。

以下は、メッセージを復号化する Java プログラムです: (私は BouncyCastleProvider を使用しています)

0 投票する
3 に答える
2431 参照

php - Crypto++ AES 暗号化を PHP の mcrypt に移植する際のキー サイズの誤り

以前、C++ CryptoPP Rijndael_128 CBC コードを MCrypt PHP に移植することができましたが、現在、CFB モードで問題が発生しています。C++ と PHP の結果は一致しません (最初のバイトは一致しますが、これは偶然かもしれませんが、他のすべては一致しません)。いくつかの診断では、PHP の mcrypt がキーの長さを正しく設定していないように見えますか?

これがC++です(簡単にするために診断と雑用は削除されています):

そして、ここにPHPがあります:

g_encrypt_keyg_encrypt_ivはどちらも 16 バイトの長さで、バイトは C++ と PHP のバージョンで一致します。PHP バージョンの場合、バイトから構築されたバイナリ文字列です (はい、これらが同一であることを確認しました)。

$cipherのブロック サイズ、キー サイズなどを確認するために、PHP バージョンへの呼び出しを追加しました。ブロック サイズと iv サイズは両方とも 16 です。サポートされている鍵のサイズは、16、24、および 32 と報告されており、すべて予想どおりです。

私が問題だと思うのは、キーサイズが 32 バイトと報告されていることです。mcrypt docs を見ると、キーサイズを設定する唯一の方法は、必要なサイズのキーを提供することです。しかし、私は 16 バイトの鍵を渡しています! では、なぜ 32 バイトのキーの存在を報告しているのでしょうか? CFB モードで 32 バイトのキーを使用する必要がある場合、CryptoPP はなぜそれを問題なく受け入れるのですか? 解決策は何ですか?提供された 16 バイトの鍵を PHP に強制的に使用させることはできますか? または、CryptoPP で MCrypt とは異なる設定にデフォルト設定されている、欠落しているパラメーターがありますか?

結果の暗号化データの長さを最小限に抑えたいので、CFB モードを使用しています。パディングによって導入される数バイトは、このアプリケーションでは重要です。

C ++で暗号化/復号化できる必要がありますが、PHPでのみ暗号化できます。AES は間違いなく、私のアプリケーションにとってやり過ぎです。データ内の個々のバイトの機能が明確にならないように、最低限必要なのは「バイトの適切なスクランブル」です。

0 投票する
0 に答える
967 参照

php - PHP と Flex を使用して SWF ファイルを暗号化してから復号化する

mcrypt "say .swf" を使用して PHP でファイルを暗号化し、それをフレックス アプリケーションで復号化する最も簡単な形式を誰かが親切に提供してくれませんか?

前もって感謝します。

ps: ファイルは read_file($file); を介して Flex アプリケーションに提供されます。関数。

ラミ

0 投票する
2 に答える
560 参照

php - openSSL 暗号化で十分ですか?

次のプロセスを経るデータベースに機密情報が保存されています。

  1. ユーザーは Web フォームから情報を入力します。
  2. 入力された情報は AES 256 ビットを使用して暗号化され、各ユーザーに一意の ID を使用してソルト化されます (ただし、これは同じデータベースに保存され、場合によっては同じテーブルに保存されます)。
  3. 暗号化されたパス 1 データは、openssl_pub_encrypt 関数によって解析されます。
  4. データはフィールドタイプ: varbinary で mysql データベースに保存されます

データを復号化するには:

  1. 秘密鍵はサーバー外に保存され、データを取得する必要があるたびに一時ファイルにアップロードする必要があります
  2. コードは openssl_private_decrypt を介して実行されます
  3. コードは、同じソルトと AES-256 スクリプトを使用して復号化されます。

私が疑問に思っているのは、このインスタンスで AES-256 ビットを介して情報を実行する価値があるかどうかです (キーがオフラインであり、データが危険にさらされた場合にソルトが既にテーブル内に保存されているため)?

0 投票する
3 に答える
14423 参照

php - PHP mcrypt 関数の問題

次の関数を使用して、サーバー上のデータを復号化します。

ただし、ECBを使用しないことについて多くのことを読みました(そして、それが非推奨であることを知っているので、CBCに切り替えたいと思いました。モードを次のように切り替えるだけです:

ただし、機能しません。エラーは生成されませんが、返されるデータは暗号化されたままです。

私は何が欠けていますか?

更新されたコード - まだエラーがあります:

これは機能するはずですが、次のエラーが返されます。

ブロックサイズ

blocksize in> 警告: mcrypt_encrypt()

[function.mcrypt-encrypt]: IV パラメーターは、ブロックサイズ内のブロックサイズと同じ長さでなければなりません

ブロックサイズ

0 投票する
2 に答える
726 参照

php - 暗号化と復号化後、文字列が等しくなくなりました

次のクラスを使用して、文字列を暗号化および復号化します。2つの同一の文字列を作成した後、文字列の1つを暗号化してから、復号化します。ただし、復号化された文字列は、(変換後のテキスト形式では同じように見えますが)その双子とは等しくなりません。また、暗号化された文字列とそのツインを取得し、bin2hexを使用して16進数に変換した後、前に暗号化された文字列の末尾にゼロが追加されていることだけが似ていることがわかりました。

誰かが私が間違ったことを指摘できますか?前もって感謝します。

クラスproCrypt{

}//クラスの終わり