<?php // =============================================================================== /* * lvesu.com * Note: * 加解密 * */ // =============================================================================== class Crypt3Des { private $key = ""; private $iv = ""; /** * 构造,传递二个已经进行base64_encode的KEY与IV * * @param string $key * @param string $iv */ function __construct($key, $iv) { if (empty($key) || empty($iv)) { echo 'key and iv is not valid'; exit(); } $this->key = $key; $this->iv = $iv;//8 //$this->iv = $iv.'00000000000';//16 } /** * @title 加密 * @param string $value 要传的参数 * @ //OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING //AES-128-ECB|AES-256-CBC|BF-CBC * @return json * */ public function encrypt($value) { //参考地址:https://stackoverflow.com/questions/41181905/php-mcrypt-encrypt-to-openssl-encrypt-and-openssl-zero-padding-problems# $value = $this->PaddingPKCS7($value); $key = base64_decode($this->key); $iv = base64_decode($this->iv); //AES-128-ECB|不能用 AES-256-CBC|16 AES-128-CBC|16 BF-CBC|8 aes-128-gcm|需要加$tag DES-EDE3-CBC|8 $cipher = "DES-EDE3-CBC"; if (in_array($cipher, openssl_get_cipher_methods())) { //$ivlen = openssl_cipher_iv_length($cipher); // $iv = openssl_random_pseudo_bytes($ivlen); $result = openssl_encrypt($value, $cipher, $key, OPENSSL_SSLV23_PADDING, $iv); //$result = base64_encode($result); //为3的时间要用 //store $cipher, $iv, and $tag for decryption later /* $original_plaintext = openssl_decrypt($result, $cipher, $key, OPENSSL_SSLV23_PADDING, $iv); echo $original_plaintext."\n";*/ } return $result; } /** * @title 解密 * @param string $value 要传的参数 * @return json * */ public function decrypt($value) { $key = base64_decode($this->key); $iv = base64_decode($this->iv); $decrypted = openssl_decrypt($value, 'DES-EDE3-CBC', $key, OPENSSL_SSLV23_PADDING, $iv); $ret = $this->UnPaddingPKCS7($decrypted); return $ret; } private function PaddingPKCS7($data) { //$block_size = mcrypt_get_block_size('tripledes', 'cbc');//获取长度 //$block_size = openssl_cipher_iv_length('tripledes', 'cbc');//获取长度 $block_size = 8; $padding_char = $block_size - (strlen($data) % $block_size); $data .= str_repeat(chr($padding_char), $padding_char); return $data; } private function UnPaddingPKCS7($text) { $pad = ord($text{strlen($text) - 1}); if ($pad > strlen($text)) { return false; } if (strspn($text, chr($pad), strlen($text) - $pad) != $pad) { return false; } return substr($text, 0, -1 * $pad); } }
PHP7 3DES加解密
来源:网络转载 浏览:34745次 时间:2023-08-14
推荐资讯
- PHP - Manual: event_base_new
- PHP - Manual: magic_quotes_runtime
- PHP - Manual: HaruPage::setLineCap
- PHP - Manual: MysqlndUhConnection::killConnection
- PHP - Manual: dbplus_xunlockrel
- PHP - Manual: gupnp_root_device_start
- PHP - Manual: MysqlndUhConnection::getStatistics
- PHP - Manual: MysqlndUhConnection::connect
- PHP - Manual: Beyond TTL: user-defined storage
- PHP - Manual: CairoStatus
推荐站点
At-lib分类目录
At-lib网站分类目录汇集全国所有高质量网站,是中国权威的中文网站分类目录,给站长提供免费网址目录提交收录和推荐最新最全的优秀网站大全是名站导航之家
www.at-lib.cn中国链接目录
中国链接目录简称链接目录,是收录优秀网站和淘宝网店的网站分类目录,为您提供优质的网址导航服务,也是网店进行收录推广,站长免费推广网站、加快百度收录、增加友情链接和网站外链的平台。
www.cnlink.org35目录网
35目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向35目录推荐、提交优秀网站。
www.35mulu.com就要爱网站目录
就要爱网站目录,按主题和类别列出网站。所有提交的网站都经过人工审查,确保质量和无垃圾邮件的结果。
www.912219.com伍佰目录
伍佰网站目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向伍佰目录推荐、提交优秀网站。
www.wbwb.net