2017-02-17 1 views
-1

の最後にガベージテキストを返し、私は暗号化したテキストを復号化するために使用していたクラスです:ラインダール(AES)を解読することはここでは、文字列

class Cipher { 

    private $key, $iv; 

    function __construct() { 

     $this->key = "edrtjfjfjlldldld"; 
     $this->iv = "5666685225155700988888995512AbCd"; 
    } 

    function encrypt($text) { 

     $block = mcrypt_get_block_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC); 
     $padding = $block - (strlen($text) % $block); 
     $text .= str_repeat(chr($padding), $padding); 
     $crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $this->key, $text, MCRYPT_MODE_CBC, $this->iv); 

     return rtrim(base64_encode($crypttext),"\0"); 
    } 

    function decrypt($input) { 

     $dectext = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $this->key, base64_decode($input), MCRYPT_MODE_CBC, $this->iv),"\0"); 
     return $dectext; 
    } 
} 

出力:

Input : 103500.00 
Encrypt: or+JRAS+lnLVcHgKfrV8URMAdWLs440EEapTT7PlQck= 
Decrypt: 103500.00(+garbled characters) 

をしている理由ガーベッジ文字は、復号化されたテキストに存在しますか?

+1

これはJavaと何が関係していますか? – px06

+0

私はPHPで試した... – sridhard

答えて

0

私はそれがパディングまたはキーサイズに対処する何かを持っていると言います。 RIJNDAEK 256ビットを要求しますが、128ビットのキーを指定します。

0

ここで $ qは$入力です。

function encryptIt($q) { 
     $cryptKey = 'qJB0rGtInRCD5UB1xG03efyCpRKRV'; 
     $qEncoded  = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($cryptKey), $q, MCRYPT_MODE_CBC, md5(md5($cryptKey)))); 
     return($qEncoded); 
    } 

function decryptIt($q) { 
    $cryptKey = 'qJB0rGtInRCD5UB1xG03efyCpRKRV'; 
    $qDecoded  = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($cryptKey), base64_decode($q), MCRYPT_MODE_CBC, md5(md5($cryptKey))), "\0"); 
    return($qDecoded); 
} 
関連する問題