0

私はこれらの警告を受け続けます:

警告: mcrypt_generic_init(): mcrypt_generic_init(): 1 は、C:\Users\dever\Desktop\web code\HeloWorld\HeloWorld\Crypt.php の 123 行、9 列目の有効な MCrypt リソースではありません。

警告: mdecrypt_generic(): mdecrypt_generic(): 1 は、C:\Users\dever\Desktop\web code\HeloWorld\HeloWorld\Crypt.php の 124 行、9 列目の有効な MCrypt リソースではありません。

警告: mcrypt_generic_deinit(): mcrypt_generic_deinit(): 1 は、C:\Users\dever\Desktop\web code\HeloWorld\HeloWorld\Crypt.php の 125 行、9 列目の有効な MCrypt リソースではありません。

警告: mcrypt_generic_init(): mcrypt_generic_init(): 1 は、C:\Users\dever\Desktop\web code\HeloWorld\HeloWorld\Crypt.php の行 100、列 9 の有効な MCrypt リソースではありません。

警告: mcrypt_generic(): mcrypt_generic(): 1 は、C:\Users\dever\Desktop\web code\HeloWorld\HeloWorld\Crypt.php の 105 行、9 列目の有効な MCrypt リソースではありません。

警告: mcrypt_generic_deinit(): mcrypt_generic_deinit(): 1 は、C:\Users\dever\Desktop\web code\HeloWorld\HeloWorld\Crypt.php の 107 行、9 列目にある有効な MCrypt リソースではありません。

これは警告であり、文字列が暗号化されているように見えるため、今まで無視してきました。ただし、私が使用しているリモート サーバーは、暗号化された文字列が気に入らず、同じようにエラーを返しているようです。

これらの警告を生成するコードは次のとおりです。

    mcrypt_generic_init($this->_td, $this->_key, $iv);
    $data = mdecrypt_generic($this->_td, $data);
    mcrypt_generic_deinit($this->_td);

$iv = mcrypt_create_iv(self::AES_BLOCK_SIZE, $random_source);
    $s = mcrypt_generic_init($this->_td, $this->_key, $iv);
    if( ($s < 0) || ($s === false))
        die( "Really an error" );
    $data = mcrypt_generic($this->_td, $data);
    $data = $iv.$data;
    mcrypt_generic_deinit($this->_td);

調査しましたが、これらの警告が何を意味するのか、暗号化/復号化に影響を与えているのか、それとも正確に何が問題なのかを見つけることができませんでした? コードではないことは確かです(別のサーバーで動作しているため)。

4

1 に答える 1

1

これは私が実行したテストで、var_dumpsで表示されている値を再現します。

$td = mcrypt_module_open(MCRYPT_DES, '', MCRYPT_MODE_ECB, '/usr/lib/mcrypt-modes');
var_dump($td);
mcrypt_module_close($td);
var_dump($td);

それは印刷します:

resource(4) of type (mcrypt)
resource(4) of type (Unknown)

同じ動作が見られるため (リソース ID は同じままですが、関連付けが失われます)、初期化と実際の呼び出しmcryptの間のある時点でモジュール リソースを閉じているようです。$this->_tdmcrypt_generic_init

于 2012-10-25T19:12:19.073 に答える