-1

トリプル DES URL エンコード文字列 (たとえば、"q" という名前のクエリ文字列変数でページに渡される) を復号​​化する方法の例で、PHP 以外の開発者を誰かが助けてくれることを期待していました。

キーは 24 ビットで、初期化ベクトルは 8 ビットです。

C# では、元のデータは次のとおりです。

  1. バイト配列としてエンコードされた UTF-8
  2. キーと IV で暗号化
  3. Base 64 文字列としてエンコード
  4. 文字列としてエンコードされた URL

...

byte[] rawData;
TripleDES tripleDESalg = TripleDES.Create();
rawData = UTF8Encoding.UTF8.GetBytes(message);
ICryptoTransform cTransform = tripleDESalg.CreateEncryptor(key, IV);
byte[] resultArray = cTransform.TransformFinalBlock(rawData, 0, rawData.Length);
tripleDESalg.Clear();
encryptedText = Convert.ToBase64String(resultArray);

...

PHPページでは、これらのステップを一緒に行う方法の例を実際に見つけることができません:

  1. クエリ文字列変数「q」で URL エンコードされた文字列をデコードします
  2. Base 64 でエンコードされた文字列をデコードします (例: base64_decode)
  3. 暗号化に使用されたのと同じキーとivを使用して値を復号化します(暗号化と復号化を制御し、両方のシステムがキーとivが何であるかを知っていると仮定します)
  4. 出力を印刷/エコー

4

1 に答える 1

2

クエリ文字列から値を取得する

$string = $_REQUEST['q'];

URL デコード

urldecode

Base64 デコード

base64_decode

復号化

を使用しmcrypt_decryptます。

最初のパラメーターには、暗号 ( List of Ciphers ) を渡します。この場合、これはMCRYPT_DES.

残りのパラメータは、暗号文、キー、iv などです。

PHP マニュアルは網羅的です。これを使って。

于 2012-05-25T01:35:50.690 に答える