分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > IT知识

php aes加密解密类(兼容php5、php7)

发布时间:2023-09-06 02:16责任编辑:胡小海关键词:加密解密
<?php/** * @desc:php aes加密解密类 * @author [Lee] <[<complet@163.com>]> */class aes{ ???// 加密方式:1、mcrypt;2、openssl 默认1 ???private $type; ???// cast-128 ?gost ?rijndael-128 ?twofish ?cast-256 ?loki97 ?rijndael-192 ?saferplus ?wake ?blowfish-compat ?des ?rijndael-256 ?serpent ?xtea ?blowfish ?enigma ?rc2 ?tripledes ?arcfour ???// AES-128-CBC ?AES-128-CFB ?AES-128-CFB1 ?AES-128-CFB8 ?AES-128-CTR ?AES-128-ECB ?AES-128-OFB ?AES-128-XTS ?AES-192-CBC ?AES-192-CFB ?AES-192-CFB1 ?AES-192-CFB8 ?AES-192-CTR ?AES-192-ECB ?AES-192-OFB ?AES-256-CBC ?AES-256-CFB ?AES-256-CFB1 ?AES-256-CFB8 ?AES-256-CTR ?AES-256-ECB ?AES-256-OFB ?AES-256-XTS ?BF-CBC ?BF-CFB ?BF-ECB ?BF-OFB ?CAMELLIA-128-CBC ?CAMELLIA-128-CFB ?CAMELLIA-128-CFB1 ?CAMELLIA-128-CFB8 ?CAMELLIA-128-ECB ?CAMELLIA-128-OFB ?CAMELLIA-192-CBC ?CAMELLIA-192-CFB ?CAMELLIA-192-CFB1 ?CAMELLIA-192-CFB8 ?CAMELLIA-192-ECB ?CAMELLIA-192-OFB ?CAMELLIA-256-CBC ?CAMELLIA-256-CFB ?CAMELLIA-256-CFB1 ?CAMELLIA-256-CFB8 ?CAMELLIA-256-ECB ?CAMELLIA-256-OFB ?CAST5-CBC ?CAST5-CFB ?CAST5-ECB ?CAST5-OFB ?DES-CBC ?DES-CFB ?DES-CFB1 ?DES-CFB8 ?DES-ECB ?DES-EDE ?DES-EDE-CBC ?DES-EDE-CFB ?DES-EDE-OFB ?DES-EDE3 ?DES-EDE3-CBC ?DES-EDE3-CFB ?DES-EDE3-CFB1 ?DES-EDE3-CFB8 ?DES-EDE3-OFB ?DES-OFB ?DESX-CBC ?GOST 28147-89 ?IDEA-CBC ?IDEA-CFB ?IDEA-ECB ?IDEA-OFB ?RC2-40-CBC ?RC2-64-CBC ?RC2-CBC ?RC2-CFB ?RC2-ECB ?RC2-OFB ?RC4 ?RC4-40 ?RC4-HMAC-MD5 ?SEED-CBC ?SEED-CFB ?SEED-ECB ?SEED-OFB ?aes-128-cbc ?aes-128-ccm ?aes-128-cfb ?aes-128-cfb1 ?aes-128-cfb8 ?aes-128-ctr ?aes-128-ecb ?aes-128-gcm ?aes-128-ofb ?aes-128-xts ?aes-192-cbc ?aes-192-ccm ?aes-192-cfb ?aes-192-cfb1 ?aes-192-cfb8 ?aes-192-ctr ?aes-192-ecb ?aes-192-gcm ?aes-192-ofb ?aes-256-cbc ?aes-256-ccm ?aes-256-cfb ?aes-256-cfb1 ?aes-256-cfb8 ?aes-256-ctr ?aes-256-ecb ?aes-256-gcm ?aes-256-ofb ?aes-256-xts ?bf-cbc ?bf-cfb ?bf-ecb ?bf-ofb ?camellia-128-cbc ?camellia-128-cfb ?camellia-128-cfb1 ?camellia-128-cfb8 ?camellia-128-ecb ?camellia-128-ofb ?camellia-192-cbc ?camellia-192-cfb ?camellia-192-cfb1 ?camellia-192-cfb8 ?camellia-192-ecb ?camellia-192-ofb ?camellia-256-cbc ?camellia-256-cfb ?camellia-256-cfb1 ?camellia-256-cfb8 ?camellia-256-ecb ?camellia-256-ofb ?cast5-cbc ?cast5-cfb ?cast5-ecb ?cast5-ofb ?des-cbc ?des-cfb ?des-cfb1 ?des-cfb8 ?des-ecb ?des-ede ?des-ede-cbc ?des-ede-cfb ?des-ede-ofb ?des-ede3 ?des-ede3-cbc ?des-ede3-cfb ?des-ede3-cfb1 ?des-ede3-cfb8 ?des-ede3-ofb ?des-ofb ?desx-cbc ?gost89 ?gost89-cnt ?id-aes128-CCM ?id-aes128-GCM ?id-aes128-wrap ?id-aes192-CCM ?id-aes192-GCM ?id-aes192-wrap ?id-aes256-CCM ?id-aes256-GCM ?id-aes256-wrap ?id-smime-alg-CMS3DESwrap ?idea-cbc ?idea-cfb ?idea-ecb ?idea-ofb ?rc2-40-cbc ?rc2-64-cbc ?rc2-cbc ?rc2-cfb ?rc2-ecb ?rc2-ofb ?rc4 ?rc4-40 ?rc4-hmac-md5 ?seed-cbc ?seed-cfb ?seed-ecb ?seed-ofb ???private $cipher = ‘seed-ofb‘; ???// cbc ?cfb ?ctr ?ecb ?ncfb ?nofb ?ofb ?stream ?????private $mode = ‘stream‘; ???private $iv; ???// MCRYPT_RAND ?MCRYPT_DEV_RANDOM ?MCRYPT_DEV_URANDOM ???private $source = MCRYPT_RAND; ???private $key; ???private $data; ???/* ????构造函数 ????@param key 密钥 ????@param type 加密类型:1、mcrypt;2、openssl ????*/ ???public function __construct($key,$type = 1){ ???????$this->key = $key; ???????$this->type = $type; ???} ???private function getiv(){ ???????$cipher = $this->cipher; ???????$mode = $this->mode; ???????$source = $this->source; ???????$size = mcrypt_get_iv_size($cipher,$mode); ???????$iv = mcrypt_create_iv($size,$source); ???????return $iv; ???} ???public function encrypt($data){ ???????$type = $this->type; ???????$cipher = $this->cipher; ???????$mode = $this->mode; ???????$key = $this->key; ???????if($type == 1){ ???????????$iv = $this->getiv(); ???????????$td = mcrypt_module_open($cipher, "", $mode, ""); ???????????mcrypt_generic_init($td, $key, $iv); ???????????$encrypted = mcrypt_generic($td, $data); ???????????mcrypt_generic_deinit($td); ???????????mcrypt_module_close($td); ???????????$ret = base64_encode($encrypted); ???????}else{ ???????????$encryption_key = base64_decode($key); ???????????$len = openssl_cipher_iv_length($cipher); ???????????$iv = openssl_random_pseudo_bytes($len); ???????????$encrypted = openssl_encrypt($data, $cipher, $encryption_key, 0, $iv); ???????????$ret = base64_encode($encrypted . ‘::‘ . $iv); ???????} ???????return $ret; ???} ???public function decrypt($data){ ???????$type = $this->type; ???????$cipher = $this->cipher; ???????$mode = $this->mode; ???????$key = $this->key; ???????if($type == 1){ ???????????$iv = $this->getiv(); ???????????$td = mcrypt_module_open($cipher,"",$mode,""); ???????????mcrypt_generic_init($td, $key, $iv); ???????????$decode = base64_decode($data); ???????????$dencrypted = mdecrypt_generic($td, $decode); ???????????mcrypt_generic_deinit($td); ???????????mcrypt_module_close($td); ???????????$ret = $dencrypted; ???????}else{ ???????????$encryption_key = base64_decode($key); ???????????$arr = explode(‘::‘, base64_decode($data)); ???????????$encrypted_data = $arr[0]; ???????????$iv = $arr[1]; ???????????$ret = openssl_decrypt($encrypted_data, $cipher, $encryption_key, 0, $iv); ???????} ???????return $ret; ???}}// $key = ‘abcdefg‘;// $data = ‘你好 world‘;// $aes = new aes($key,2);// $encode = $aes->encrypt($data);// echo $encode.PHP_EOL;// $decode = $aes->decrypt($encode);// echo $decode.PHP_EOL;

php aes加密解密类(兼容php5、php7)

原文地址:http://blog.51cto.com/12173069/2292180

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved