0

単純な暗号化クラスを作成しようとしていますが、結果の文字列に非 ASCII 文字が埋め込まれています。他の回答で述べたように、rtrim()、utf8 への変換などを試しました。私は正確に何が欠けていますか?結果をメモ帳++に貼り付けると、文字が表示されます

ここに画像の説明を入力

ここに文字を含むペーストビン。HTML では 't' として表示されますが、それをメモ帳にコピーすると、その後にランダムなビットのデータが表示されます。

class Crypter implements ICrypter {

private $Key;
private $Algo;

public function __construct($Algo = MCRYPT_BLOWFISH) {

    $this->Key = substr('key', 0, mcrypt_get_key_size($Algo, MCRYPT_MODE_ECB));
    $this->Algo = $Algo;

}

public function Encrypt($data) {

    //$iv_size = mcrypt_get_iv_size($this->Algo, MCRYPT_MODE_ECB);
    //$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);

    $blocksize = mcrypt_get_block_size('blowfish', 'ecb'); // get block size
    $pkcs = $blocksize - (strlen($data) % $blocksize); // get pkcs5 pad length
    $data.= str_repeat(chr($pkcs), $pkcs); // append pkcs5 padding to the data


    $crypt = mcrypt_encrypt($this->Algo, $this->Key, $data, MCRYPT_MODE_ECB);
    return rtrim(base64_encode($crypt));

}

public function Decrypt($data) {

    $crypt = base64_decode($data);
    $iv_size = mcrypt_get_iv_size($this->Algo, MCRYPT_MODE_ECB);
    $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
    $decrypt = mcrypt_decrypt($this->Algo, $this->Key, $crypt, MCRYPT_MODE_ECB, $iv);
    return rtrim($decrypt);
}
 }
4

1 に答える 1