AES CBC

PHP中文网
リリース: 2016-05-23 16:36:44
オリジナル
989 人が閲覧しました

php代码

class AES_CBC_NoPadding
{
	private $iv;
	private $key;
	private $blocksize;
	
	public function __construct($key, $iv)
	{
		$this->blocksize = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
		$this->key = substr(md5($key), 0, $this->blocksize);
		$this->iv = substr(md5($iv), 0, $this->blocksize);
	}
	
	public function encrypt($text)
	{
		$pad = $this->blocksize - strlen($text)%$this->blocksize;
		$text = str_pad($text, strlen($text) + $pad, "\0");
		return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $this->key, $text, MCRYPT_MODE_CBC, $this->iv));
	}
	
	public function decrypt($text)
	{
		$text = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $this->key, base64_decode($text), MCRYPT_MODE_CBC, $this->iv);
		$len = strlen($text);
		for($len--; $len >= 0; $len--)
		{
			if($text[$len] !== "\0")
			{
				$len++;
				break;
			}
		}
		return substr($text, 0, $len);
	}
	
}

class AES_CBC_PKCS7Padding
{
	private $iv;
	private $key;
	private $blocksize;
	
	public function __construct($key, $iv)
	{
		$this->blocksize = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
		$this->key = substr(md5($key), 0, $this->blocksize);
		$this->iv = substr(md5($iv), 0, $this->blocksize);
	}
	
	public function encrypt($text)
	{
		$pad = $this->blocksize - strlen($text)%$this->blocksize;
		$text = str_pad($text, strlen($text) + $pad, chr($pad));
		return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $this->key, $text, MCRYPT_MODE_CBC, $this->iv));
	}
	
	public function decrypt($text)
	{
		$text = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $this->key, base64_decode($text), MCRYPT_MODE_CBC, $this->iv);
		$pad = ord(substr($text, -1));
		if($pad < 1 || $pad > 32) {
			$pad = 0;
		}
		return substr($text, 0, strlen($text) - $pad);
	}
	
}
ログイン後にコピー
関連ラベル:
aes
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!