首页 > 知识库 > 学习教育 >

PHP AES对称加密算法(对称加密算法:加密密钥能够从解密密钥中推算出来反之亦然)

学习教育 2022-12-12 18:27:27
利用php加密库 mcrypt 进行AES加密解密//AES加密类class AESMcrypt {   public ...更多PHP AES对称加密算法的内容,欢迎关注我们的专题频道。

对称加密算法:加密密钥能够从解密密钥中推算出来反之亦然

PHP AES对称加密算法

PHP AES对称加密算法(对称加密算法:加密密钥能够从解密密钥中推算出来反之亦然)

利用php加密库 mcrypt 进行AES加密解密//AES加密类class AESMcrypt {   public $iv = null; //秘钥向量   public $key = null; //加密key   public $bit = 128;   public $mode= null;//加密模式   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 'ecb':$this->mode = MCRYPT_MODE_ECB; break;           case 'cfb':$this->mode = MCRYPT_MODE_CFB; break;           case 'ofb':$this->mode = MCRYPT_MODE_OFB; break;           case 'nofb':$this->mode = MCRYPT_MODE_NOFB; break;           case 'cbc':$this->mode = MCRYPT_MODE_CBC; 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), "x00..x1F");       return $data;   }}在ThinkPHP3.2中的使用方法

把加密类放在第三方类库目录中

image.png

在公共函数中调用function encrypt($str){    Vendor('AES.AESMcrypt');    $config = C('AES');    $bit = $config['bit'];    $key = $config['key'];    $iv = $config['iv'];    $mode = $config['mode'];    $aes = new AESMcrypt($bit, $key, $iv,$mode);    $str = $aes->encrypt($str);    return $str;}function decrypt($str){    Vendor('AES.AESMcrypt');    $config = C('AES');//config中的配置    $bit = $config['bit'];    $key = $config['key'];    $iv = $config['iv'];    $mode = $config['mode'];    $aes = new AESMcrypt($bit, $key, $iv,$mode);    $str = $aes->decrypt($str);    return $str;}config配置文件//注意cbc模式key和iv必须是长度为16的字符串'AES' => array(        'bit' => 128,        'key' => 'woshiwangjiewang',//加解密key        'iv' => 'wangjieshiwowang',//秘钥向量        'mode' => 'cbc',//加密模式        ),接下来就可以在ThinkPHP中的直接调用encrypt()和decrypt()传入字符串进行加密解密了。encrypt('我是王杰');加密后// WLnz+cbKlkoI40BD8R4e/Q==decrypt('WLnz+cbKlkoI40BD8R4e/Q==');解密后我是王杰可以用下面的代码来检测系统是否安装了 mcrypt 模块,并查看支持哪些加密算法和模式$cipher_list = mcrypt_list_algorithms();//mcrypt支持的加密算法列表$mode_list = mcrypt_list_modes(); //mcrypt支持的加密模式列表var_dump($cipher_list);var_dump($mode_list);我当前的PHP支持一下算法和模式

image.png

作者:香瓜J链接:https://www.jianshu.com/p/3e4cacf2f484


PHP AES对称加密算法拓展阅读

PHP AES对称加密算法(对称加密算法:加密密钥能够从解密密钥中推算出来反之亦然)

利用php加密库 mcrypt 进行AES加密解密//AES加密类class AESMcrypt {   public $iv = null; //秘钥向量  ....
以上就是关于PHP AES对称加密算法(对称加密算法:加密密钥能够从解密密钥中推算出来反之亦然)的所有内容,希望对你学习有所帮助。

标签: PHP AES对称加密算法

【免责声明】本站所有文章(含图片和视频)由网站用户自行上传发布,平台仅提供信息存储服务,并不代表本站立场和观点,若有侵犯你的权利,请及时联系我们删除。
Copyright © 2016-2020 shuguohai.com All Rights Reserved. 皖ICP备2022016496号