問題タブ [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 投票する
2 に答える
1424 参照

php - PHP AES暗号化...私が何をしているのかわかりません

暗号化についてはよくわかりませんが、AES を PHP で動作させることができました。ここに私が使用しているいくつかの機能があります:

これらはmcrypt の PHP ドキュメント ページのコメントからわずかに変更されています。(dev_urandom を使用できない Windows ボックスを使用しているため、dev_urandom から rand に変更しました。)

とにかく、この関数で使用するキーは次のように定義されています。

私はこのように自分の関数を呼び出します:

echo bin2hex(aes_encrypt("wootwootwootwootwootwootwoo", PSK));

これで、結果の 16 進文字列の最初の 16 バイト (32 桁) は問題ありません。次の 16 バイトが予想と一致しません。

ほら、このデータを外部のWebサービスに投稿してから復号化しています。私は (残念ながら) 暗号化キーとデータを渡さなければ、私が持っている 1 つのテスト ケースを提供することはできません。大変申し訳ありませんが、mcrypt に精通している方がこれを見て、私が間違っていることを教えてくれることを願っています。

繰り返しますが、確かなテスト ケースの欠如について申し訳ありませんが、あなたが与えることができるどんな助けにも大いに感謝しています!

編集:私が投稿しているプロバイダーは、null IV を使用しているようです。Rook のアドバイスに従って、CBC モードに切り替え、キーに関連する不要なコードを削除しました。ここに私の新しい機能があります:

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

php - mcrypt、Mac OSx 10.6 を取得しようとすると PHP コンパイル エラーが発生する

私は、Web サーバーとして使用する新しい Mac Mini に LAMP スタックをセットアップする作業を行っています。バンドルされている PHP バージョン 5.3.3 と Apache 2.2.15 を使用しています。

phpMyAdmin が機能し、mysql インストールに接続しましたが、「mcrypt 拡張機能を読み込めません。このチュートリアルを行いました - http://michaelgracie.com/2009/09/23/plugging-mcrypt-into-php-on- mac-os-x-snow-leopard-10.6.1/ - mcrypt をインストールすると、最後のスクリーンショットのように phpinfo() で mcrypt がインストールされていることが示されます。

しかし、まだ mcrypt 拡張機能がロードされていないという警告が表示されます。どうすればこれを取り除くことができますか。このサーバーは最終的に本番用に使用される予定であり、安全であることを望みます。

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

php - MembershipProvider.GetPassword アルゴリズム

ASP サイト (DotNetNuke を使用) を新しい PHP サイトに変換しています。私たちが今持っている唯一のものは、既存のデータベースの完全なエクスポートです。テーブルの 1 つは "aspnet_Membership" と呼ばれ、次のフィールドが含まれています。

  • パスワード (base64 のように見えます)
  • PasswordFormat (常に値 2)
  • PasswordSalt (base64 のように見えます)
  • PasswordQuestion (常に空)
  • PasswordAnswer (常に空)

これらのパスワードをデコードし、独自のフレームワークに合わせてハッシュしたいと考えています。私が .NET ドキュメントから理解していることから、これらの種類のパスワードは復号化できます。これを行うことができる利用可能なアルゴリズムはありますか、それともそれよりも複雑ですか? 現在のサーバーで ASP スクリプトを作成することは可能ですか?

前もって感謝します

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

c# - Rijndaelを使用したクロスプラットフォーム(phpからC#.NET)の暗号化/復号化

現在、phpmcryptで暗号化されたメッセージの復号化に少し問題があります。phpコードは次のとおりです。

暗号化されたメッセージは、ASP.NETプラットフォーム(C#)に送信されます。ただし、復号化の順序を保持するのに問題があります(base64デコードからurldecode)。ASP.NETで使用したコードは次のとおりです(ivとキーはphpと同じです)。

私が抱えている問題は、phpから暗号化されたメッセージを受け取った後、それをbyte []に​​変換し、それをurldecodeできるようにUTF8でエンコードされた文字列に変換し直したことです。次に、結果を関数にフィードし、文字列をbyte []に​​変換して、復号化プロセスを実行しました。しかし、私は望ましい結果を得ることができません...何かアイデアはありますか?

前もって感謝します。

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

php - mcrypt は、crypt() でサポートされているのと同じアルゴリズムを実行できますか?

crypt()PHP の関数を使用してハッシュされたパスワードを格納する PHP 5.3 で実行されるアプリがあります。ただし、使用されているハッシュ タイプ (SHA 512) は、私が現在使用している PHP 5.2 を実行するサーバーの 1 つでデフォルトでは使用できません。mcrypt を使用すると、柔軟性が大幅に向上しますが、使用がより複雑になることがわかりました。

PHP の mcrypt 関数を使用して、(SHA512 ソルトを使用して) crypt と同じ結果を得ることができますか?

したがって、SHA512 ソルトを使用して「test」と入力すると、暗号化されたデータは、crypt() を使用する場合と mcrypt() を使用する場合とで同じになるはずです。

それが不可能な場合は、他に何をすべきかアドバイスをもらえますか? 残念ながら、PHP 5.3 へのアップグレードはオプションではありません (これはクラウド サーバーであり、そのためのスクリプトを作成する時間がありません)。

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

php - URL内の暗号化されたデータ

会社の注文を管理するためのPHPアプリケーションを開発しています。注文を表示するには、URLは現在/orders/view/3502です。

注文ID番号をURLに表示したくないので、CodeIgniterの暗号化ライブラリを使用してURLのIDを暗号化しました。URL(暗号化後)は次のようになり/orders/view/AaffGdQQます。

私が抱えている問題は、暗号化されたIDにスラッシュまたはプラス記号が含まれていることがあります。これらはURL内では正しく機能しません。CodeIgniterはスラッシュに基づいてURLを読み取るため、暗号化されたIDにスラッシュがある場合、それは1つではなく2つの変数として読み取られます。また、プラス記号はURLのスペースとして解釈されます。

だから、私の質問は、IDを暗号化して、文字列にプラス記号やスラッシュが含まれていないことを確認するにはどうすればよいですか?

編集:暗号化されたIDにスラッシュまたはプラス記号が含まれているかどうかを確認し、含まれている場合は再度暗号化することを考えました。何らかの理由で、IDが暗号化されるたびに異なるため、これは機能します。

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

php - iOSおよび.NETとのPHP暗号化の違い

iOSとPHPの間で暗号化された通信を行うときに問題が発生します。文字列を暗号化し、それを復号化するPHPサーバーに送信するアプリがあります。その部分はうまく機能します。ここで、PHPサーバーは暗号化された応答をアプリに送り返す必要があります。これにより、もう少し白髪が発生しているようです。

問題は、PHPで文字列を暗号化すると、iOSや.NETで暗号化された同じ文字列とは異なって見えることです。明らかに、すべての場所で同じアルゴリズム、キー、およびIVが使用されています。

私はRijndael128をCBCモードで使用し、IVは空のバイトで構成されています(これまでのところ)。

PHP暗号化は次のようになります。

iOS暗号化はこのファイルに添付されています:

StringEncryption.m: http: //pastie.org/1365766

誰かが私が何かを見逃している場所や値のいくつかの異なるパラメーターを持っている場所を見つけるのを手伝ってくれることを願っています。私はこれを数時間見てきましたが、他に試すものが見つかりません。

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

python - データ破損: バグはどこにある‽

最後の編集:問題が何であるかを把握しました (以下の自分の回答を参照してください)が、質問を回答済みとしてマークすることはできません。以下の私の回答にある質問に誰かが答えることができる場合、つまり、これは Cython のバグですか、それとも Cython の意図した動作ですか? .


最初に、私はこれを理解しようと 3 日間試みてきたと言うことから始めなければなりません。私はただ頭を壁にぶつけています。ドキュメントからわかる限り、私は正しくやっています。明らかに、私は物事を正しく行うことはできません。

いずれにせよ、私は mcrypt を Python にバインドする作業を行っています。Python 2 と Python 3 の両方で動作するはずです (ただし、Python 2 ではテストされていません)。投稿に含めるには大きすぎるため、リンクされています。また、何が間違っているのかわからないため、問題のコードを特定することさえできません問題を示すスクリプトも私のサイトにあります。スクリプトは、文字「a」のみの 100 ブロックをフィードするだけで (暗号化アルゴリズム/暗号化モードが使用するブロック サイズに関係なく)、もちろん、ラウンドトリップの結果として「a」のブロックを取得する必要があります。しかし、そうではありません(常に)。これを 1 回実行した場合の出力は次のとおりです。

奇妙な部分は、特定の (アルゴリズム、モード) ペアに対してまったく同じであるということです。アルゴリズムを変更すると、異なるラウンドトリップが発生しますが、アルゴリズムを変更しない場合、実行ごとに常に同じになります。私は絶対に困惑しています。また、上記の出力でわかるように、ブロック 5 と 6、ブロック 13 と 14 など、常に 2 つのブロックが連続して破損しています。したがって、パターンはありますが、何らかの理由で把握できません。そのパターンが正確に指しているもの。

私はおそらくここで多くの質問をしていることに気付きました.コードの小さな断片を分離することはできません.mcryptとPythonの両方に精通している必要があります. 悲しいかな、これに頭を悩ませてから 3 日後、私はこの問題から少し離れる必要があります。 (b) 後で問題に戻ったときに自分のバグを確認できる、または (c) 誰かまたは自分自身が自分のコードのバグではないかもしれない問題を見つけることができるバインディング プロセスまたはライブラリ自体のバグ。

私が行っていないことの 1 つは、別のバージョンの mcrypt ライブラリを使用しようとしたことです。Cython 0.13、Python 3.1、および mcrypt 2.5.8 を使用して作業を行っています。これらはすべて、Ubuntu 10.10 で Ubuntu によって配布されています (PyPi から取得した Cython を除く)。しかし、私は問題なく機能し、Ubuntu 10.10 でデータ破損なしに mcrypt を使用している PHP アプリケーションでシステムを管理しているので、それが mcrypt のビルドであると信じる理由はありません。 、 おもう。

いずれにせよ、助けてくれる人には心から感謝します。私はこの問題に何日もノンストップで取り組んできたので、気が狂いそうになり始めており、解決策はおそらく目の前にあると感じていますが、それを見ることができません。

編集: strncpy の代わりに memcpy を使用する必要があると誰かが指摘しました。私はそれを実行しましたが、テスト スクリプトはすべてのブロックが正しくないことを示しています。以前よりもさらに混乱しています...これがpastebinの新しい出力です。

編集 2 : 私はコンピューターに戻ってきて、もう一度見てきました。問題が発生している可能性がある場所を見つけるために、どこにでも print ステートメントを追加しているだけです。raw_encrypt.step(input) 関数の次のコード:

最初の print ステートメントは、渡されたプレーンテキストであると予想されるものを示しています。ただし、2 番目のステートメントは、完全に異なるものを示しており、同一である必要があります。私が完全に理解していない Cython で何かが起こっているようです。

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

php - php_mcrypt.dll が PHP のロードを妨げている

WEMP (Engine-x / NGINX) を使用していますが、mcrypt 拡張機能を phpmyadmin 用にロードできないようです。

私は 1 時間以上この問題を解決しようとしてきました。libmcrypt.dll を PHP ルート フォルダーと windows/system32 内に配置しようとしましたが、うまくいきませんでした。

特にエラーはありません。PHP exe をロードしようとすると、php.ini ファイル内に "extension=php_mcrypt.dll" があると、exe が即座にクラッシュします。

どんな助けでも大歓迎です。前もって感謝します

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

java - PHPでJasyptで暗号化された文字列を復号化するには?

これは不可能な質問かもしれませんが、レガシー システムを Java から PHP に移行しているので、Jasypt で暗号化された文字列を PHP で復号化できる必要があります。

ドキュメントによると、Jasypt は次のアルゴリズムを使用します。

  • 暗号化するデータにランダムソルト(暗号の初期化ベクトルと同じだと思います)を追加します
  • 1000回繰り返し暗号化する
  • 暗号化されていないソルト/IV を暗号化された文字列に追加します
  • 文字列全体を Base64 でエンコードする

レガシー アプリケーションはPBEWithMD5AndDESJasypt アルゴリズムを使用します。MD5 が解読できるように設計されていないことは十分承知しており、それは私がやろうとしていることではありません。

MD5 ハッシュだけが残るように、文字列を DES で復号化したいだけです。PHP からバイナリのガベージ以外は何も得られないようです。私は何が欠けていますか?