8

javascript を使用して、AES-256-CBC および php mcrypt ライブラリでデータをエンコードしてデコードしようとしています。

私は、javascript の問題のある性質と、誰もがキーを見ているという事実を認識していますが、Web 以外の環境用のスクリプト ツールである javascript を使用しているので、心配していません。

pidder https://sourceforge.net/projects/pidcrypt/を見つけました

デモページでいくつかのデータを暗号化し、php経由で復号化しようとしましたが、何かが間違っていて、何が見つからないようです...両端で同じキー、32バイト文字列を使用しています

任意のポインタをいただければ幸いです

~~~

$encrypted = "string after pidder encryption";  

$cipher = mcrypt_module_open(MCRYPT_RIJNDAEL_256,'',MCRYPT_MODE_CBC,'');    

$iv_size = mcrypt_enc_get_iv_size($cipher);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);

mcrypt_generic_init($cipher, $key, $iv);


$encrypted = base64_decode($encrypted);

echo "after b64decode: " . $encrypted . "\n\n\n";

$encrypted = mdecrypt_generic($cipher, $encrypted);

echo "decrypt:" . $encrypted;

~~~

4

5 に答える 5

1

AES-256 の 32 バイトのキーで MCRYPT_RIJNDAEL_128 を試してください。

AES は、128、192、および 256 ビットの鍵をサポートする 128 ビットのブロック暗号です。Rijndael-256 は、256 ビットのブロック暗号および AES です。AES は、Rijndael の 128 ビット ブロック仕様です。

于 2014-02-17T19:54:54.217 に答える
0

Pidderはキー導出関数を使用してパスワードからキーを取得します(おそらくHMAC-SHA1である必要があります)が、キーとしてプレーンパスワードを使用しているようです。

于 2011-06-19T20:40:10.517 に答える
0

あなたのコードはシーケンシャルです。正直なところ、修正しようとはしませんでしたが、うまく機能し、あなたを助けることができる機能があります。

    /**
 * Encrypt Token
 *
 * @param unknown $text         
 */
private function rijndaelEncrypt($text) {
    $iv_size = mcrypt_get_iv_size ( MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB );
    $iv = mcrypt_create_iv ( $iv_size, MCRYPT_RAND );
    $key = 'your key';
    return base64_encode ( mcrypt_encrypt ( MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_ECB, $iv ) );
}

/**
 * Decrypt
 *
 * @param unknown $text         
 */
private function rijndaelDecrypt($text) {
    $iv_size = mcrypt_get_iv_size ( MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB );
    $iv = mcrypt_create_iv ( $iv_size, MCRYPT_RAND );
    $key = 'your key';
    // I used trim to remove trailing spaces
    return trim ( mcrypt_decrypt ( MCRYPT_RIJNDAEL_256, $key, base64_decode ( $text ), MCRYPT_MODE_ECB, $iv ) );
}

http://us3.php.net/manual/en/function.mcrypt-encrypt.phpを参照してください。

于 2014-03-10T20:34:24.940 に答える
0

Javascript Mcryptは、PHP mcrypt とうまく連携します。ピダーの代わりにそれを使用できます。

于 2012-11-24T20:33:27.217 に答える