2009-09-14 14 views
0

を使用して暗号化と復号化関数です:間違った結果ここmycrypt_cfb

function encrypt($key, $plain_text) { 
    $plain_text = trim($plain_text); 
    $iv = substr(md5($key), 0,mcrypt_get_iv_size (MCRYPT_CAST_256,MCRYPT_MODE_CFB)); 
    $c_t = mcrypt_cfb (MCRYPT_CAST_256, $key, $plain_text, MCRYPT_ENCRYPT, $iv); 
    return trim(chop(base64_encode($c_t))); 
} 

function decrypt($key, $c_t) { 
    $c_t = trim(chop(base64_decode($c_t))); 
    $iv = substr(md5($key), 0,mcrypt_get_iv_size (MCRYPT_CAST_256,MCRYPT_MODE_CFB)); 
    $p_t = mcrypt_cfb (MCRYPT_CAST_256, $key, $c_t, MCRYPT_DECRYPT, $iv); 
    return trim(chop($p_t)); 
} 

$key = "11111"; 
$str = "1000181"; 
echo decrypt($key,encrypt($key,$str)); 

結果は最後の "1" を行方不明、100018です。
なぜですか?

+3

によって、私は今それをテストすることはできません、コメントにありましたdecrypt()の最初の行からtrim&chop呼び出しを削除してみてください。 – KiNgMaR

+1

[クリプトの原型で遊ぶのはどうしたらいいですか?](http://www.codinghorror.com/blog/archives/001267.html)。ありがとうございました。 – derobert

+0

decrypt()からトリムとチョップの呼び出しを削除します。ありがとう、KiNgMaR – anakin

答えて

0

解決した

(復号化からトリム&チョップ呼び出しを削除)

回答は、KiNgMaR

関連する問題