URL でプライベート データを送信するための小さなクラスを作成しました (Cookie/セッションなどは使用できません)。PHPのmcryptで暗号化/復号化し、URLで使用するためにbase64-en/decodeしました。
残念ながら、私はまだ時々間違った結果になってしまいます。これは、少なくとも a+
が URL に含まれている場合に常に発生することに気付きました。私もrawurlencode
とurlencode
/urldecode
をいじってみましたが、成功しませんでした。strtr()
暗号化されたデータも試しましたが、どういうわけか+
まだ表示されます。誰でもアイデアを得ましたか?
これが私のクラスです:
class crypto
{
public function __construct()
{
$this->iv_size = mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_ECB);
$this->iv = mcrypt_create_iv($this->iv_size, MCRYPT_RAND);
$this->llave = 'da332sdf9';
}
public function make_crypt($string)
{
$crypt = mcrypt_encrypt(MCRYPT_BLOWFISH, $this->llave, $string, MCRYPT_MODE_ECB, $this->iv);
$crypt = rawurlencode(base64_encode($crypt));
$crypt = strtr($crypt, '+/', '-_');
return $crypt;
}
public function get_crypt($data)
{
$crypt = strtr($crypt, '-_', '+/');
$data = base64_decode($data);
$decrypted = mcrypt_decrypt (MCRYPT_BLOWFISH, $this->llave, $data, MCRYPT_MODE_ECB, $this->iv);
return $decrypted;
}
}