<代码> & lt; ? php/* *
* @desc: php aes加密解密类
* @author(李)& lt; [& lt; complet@163.com>]比;
*/类aes {//加密方式:1、mcrypt; 2, openssl默认1
私人美元类型;//铸- 128 gost rijndael - 128 twofish cast - 256 loki97 rijndael - 192 saferplus blowfish-compat des rijndael醒来- 256蛇xtea 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
私人密码美元=皊eed-ofb”;//cbc cfb ctr央行ncfb nofb富含流b
私人美元模式=傲鳌?
私人四美元;//MCRYPT_RAND MCRYPT_DEV_RANDOM MCRYPT_DEV_URANDOM
私人来源美元=MCRYPT_RAND;
私人美元关键;
美元的私人数据;/*
构造函数
@param关键密钥
@param类型加密类型:1、mcrypt; 2, openssl
*/公共函数__construct(键,类型=1美元){
$ this→键=$键;
$ this→类型=$类型;
}
私有函数getiv () {
密码=这→美元密码;
模式=这→美元模式;
$源=$ this→源;
$大?mcrypt_get_iv_size(密码,美元模式);
$ 4=mcrypt_create_iv(大小,源美元);
返回四美元;
}
公共函数加密(元数据){
类型=这样→美元类型;
密码=这→美元密码;
模式=这→美元模式;
关键=美元这个→键;
如果($ type==1) {
4=这→美元getiv ();
(td=mcrypt_module_open美元密码”、“,美元模式," ");
mcrypt_generic_init (td,钥匙,美元$ iv);
$加密=mcrypt_generic (td,美元数据);
mcrypt_generic_deinit (td);
mcrypt_module_close (td);
(ret=base64_encode美元加密);
其他}{
(encryption_key=base64_decode美元关键);
(len=openssl_cipher_iv_length美元密码);
$ 4=openssl_random_pseudo_bytes (len美元);
$=openssl_encrypt加密(数据、密码,美元encryption_key美元,0,4美元);
(ret=base64_encode美元加密。“::”。(四)美元;
}
返回ret美元;
}
公共函数解密(元数据){
类型=这样→美元类型;
密码=这→美元密码;
模式=这→美元模式;
关键=美元这个→键;
如果($ type==1) {
4=这→美元getiv ();
(td=mcrypt_module_open美元密码”、“,美元模式," ");
mcrypt_generic_init (td,钥匙,美元$ iv);
$解码=base64_decode(元数据);
$ dencrypted=mdecrypt_generic (td,解码美元);
mcrypt_generic_deinit (td);
mcrypt_module_close (td);
ret=dencrypted美元;
其他}{
(encryption_key=base64_decode美元关键);
美元arr=爆炸(“::”base64_decode(数据)美元);
encrypted_data=https://www.yisu.com/zixun/arr美元[0];
4=arr美元[1];
(ret=openssl_decrypt美元encrypted_data,密码美元,美元encryption_key, 0, 4美元);
}
返回ret美元;
}
}//$ key=坝⒂镒帜浮?//$ data=' https://www.yisu.com/zixun/你好世界”;//aes美元=new aes($键,2);//编码=美元aes→加密(元数据);//echo $ encode.PHP_EOL;//解码=aes→美元解密($编码);//echo $ decode.PHP_EOL;