Warning: count(): Parameter must be an array or an object that implements Countable in /www/wwwroot/ainto.org/usr/plugins/TpCache/driver/typecho_mysql.class.php on line 93
PHP使用AES加密 - Ainto

PHP使用AES加密

发表在 开发 共有 0 条评论

使用之前必须先安装好Mcrypt这个模块,并且添加相应版本的扩展到PHP中,详情自行查看 PHP安装Mcrypt扩展

代码如下:

<?php
//Mcrypt AES 加密/解密 
abstract class AES
{
 
 //算法,另外还有192和256两种长度
 const CIPHER = MCRYPT_RIJNDAEL_128;
 //模式
 const MODE = MCRYPT_MODE_ECB;
 /*
 * 加密
 * @param string $key 密钥
 * @param string $str 需加密的字符串
 * @return type
 */
 static public function encode($key,$str)
 {
 $iv = mcrypt_create_iv(mcrypt_get_iv_size(self::CIPHER,self::MODE),MCRYPT_RAND);
 return mcrypt_encrypt(self::CIPHER, $key, $str, self::MODE, $iv);
 }
 
 /*
 * 解密
 * @param string $key 密钥
 * @param string $str 密文
 * @return type
 */
 static public function decode($key,$str)
 {
 $iv = mcrypt_create_iv(mcrypt_get_iv_size(self::CIPHER,self::MODE),MCRYPT_RAND);
 return mcrypt_decrypt(self::CIPHER, $key, $str, self::MODE, $iv);
 }
} 
?>
<?php 
/*示例用法*/
$str = '需要加密的字符';
$key = '密钥密钥密钥Ainto';
$str1=AES::encode($key, $str);
$str2=AES::decode($key, $str1);
//明文
echo($str)."<br><br>";
//密文Base64 直接输出编码会乱,先转换便于显示
echo base64_encode($str1) ."<br><br>";
//Base解密(浏览器查看乱码)
//echo base64_decode(base64_encode($str1))."<br><br>";
//解密内容
echo($str2)."<br><br>";
?>
评论已关闭