ホームページ  >  記事  >  バックエンド開発  >  PHPでのAES暗号化と復号化の例のまとめ

PHPでのAES暗号化と復号化の例のまとめ

高洛峰
高洛峰オリジナル
2016-12-21 10:21:101440ブラウズ

aesDemo.php:

examples、

<?php
require_once(&#39;./AES.php&#39;);
//$aes = new AES();
$aes = new AES(true);// 把加密后的字符串按十六进制进行存储
//$aes = new AES(true,true);// 带有调试信息且加密字符串按十六进制存储
$key = "this is a 32 byte key";// 密钥
$keys = $aes->makeKey($key);
$encode = "123456";// 被加密的字符串
$ct = $aes->encryptString($encode, $keys);
echo "encode = ".$ct."<br>";
$cpt = $aes->decryptString($ct, $keys);
echo "decode = ".$cpt;
?>

examples、暗号化可能および復号化可能なクラスを含む AES 暗号化クラス

<?php
//php aes加密类
class AESMcrypt {
public $iv = null;
public $key = null;
public $bit = 128;
private $cipher;
public function __construct($bit, $key, $iv, $mode) {
if(empty($bit) || empty($key) || empty($iv) || empty($mode))
return NULL;
$this->bit = $bit;
$this->key = $key;
$this->iv = $iv;
$this->mode = $mode;
switch($this->bit) {
case 192:$this->cipher = MCRYPT_RIJNDAEL_192; break;
case 256:$this->cipher = MCRYPT_RIJNDAEL_256; break;
default: $this->cipher = MCRYPT_RIJNDAEL_128;
}
switch($this->mode) {
case &#39;ecb&#39;:$this->mode = MCRYPT_MODE_ECB; break;
case &#39;cfb&#39;:$this->mode = MCRYPT_MODE_CFB; break;
case &#39;ofb&#39;:$this->mode = MCRYPT_MODE_OFB; break;
case &#39;nofb&#39;:$this->mode = MCRYPT_MODE_NOFB; break;
default: $this->mode = MCRYPT_MODE_CBC;
}
}
public function encrypt($data) {
$data = base64_encode(mcrypt_encrypt( $this->cipher, $this->key, $data, $this->mode, $this->iv));
return $data;
}
public function decrypt($data) {
$data = mcrypt_decrypt( $this->cipher, $this->key, base64_decode($data), $this->mode, $this->iv);
$data = rtrim(rtrim($data), "..");
return $data;
}
}
//使用方法
$aes = new AESMcrypt($bit = 128, $key = &#39;abcdef1234567890&#39;, $iv = &#39;0987654321fedcba&#39;, $mode = &#39;cbc&#39;);
$c = $aes->encrypt(&#39;haowei.me&#39;);
var_dump($aes->decrypt($c));

examples関連記事へ!


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。