黑松山资源网 Design By www.paidiu.com
"htmlcode">
/** * 常用对称加密算法类 * 支持密钥:64/128/256 bit(字节长度8/16/32) * 支持算法:DES/AES(根据密钥长度自动匹配使用:DES:64bit AES:128/256bit) * 支持模式:CBC/ECB/OFB/CFB * 密文编码:base64字符串/十六进制字符串/二进制字符串流 * 填充方式: PKCS5Padding(DES) * * @author: linvo * @version: 1.0.0 * @date: 2013/1/10 */ class Xcrypt{ private $mcrypt; private $key; private $mode; private $iv; private $blocksize; /** * 构造函数 * * @param string 密钥 * @param string 模式 * @param string 向量("off":不使用 / "auto":自动 / 其他:指定值,长度同密钥) */ public function __construct($key, $mode = 'cbc', $iv = "off"){ switch (strlen($key)){ case 8: $this->mcrypt = MCRYPT_DES; break; case 16: $this->mcrypt = MCRYPT_RIJNDAEL_128; break; case 32: $this->mcrypt = MCRYPT_RIJNDAEL_256; break; default: die("Key size must be 8/16/32"); } $this->key = $key; switch (strtolower($mode)){ case 'ofb': $this->mode = MCRYPT_MODE_OFB; if ($iv == 'off') die('OFB must give a IV'); //OFB必须有向量 break; case 'cfb': $this->mode = MCRYPT_MODE_CFB; if ($iv == 'off') die('CFB must give a IV'); //CFB必须有向量 break; case 'ecb': $this->mode = MCRYPT_MODE_ECB; $iv = 'off'; //ECB不需要向量 break; case 'cbc': default: $this->mode = MCRYPT_MODE_CBC; } switch (strtolower($iv)){ case "off": $this->iv = null; break; case "auto": $source = PHP_OS=='WINNT' "base64"){ $ret = false; switch ($code){ case 'base64': $str = base64_decode($str); break; case 'hex': $str = $this->_hex2bin($str); break; case 'bin': default: } if ($str !== false){ if (isset($this->iv)) { $ret = mcrypt_decrypt($this->mcrypt, $this->key, $str, $this->mode, $this->iv); } else { @$ret = mcrypt_decrypt($this->mcrypt, $this->key, $str, $this->mode); } if ($this->mcrypt == MCRYPT_DES) $ret = $this->_pkcs5Unpad($ret); } return $ret; } private function _pkcs5Pad($text){ $this->blocksize = mcrypt_get_block_size($this->mcrypt, $this->mode); $pad = $this->blocksize - (strlen($text) % $this->blocksize); return $text . str_repeat(chr($pad), $pad); } private function _pkcs5Unpad($text){ $pad = ord($text{strlen($text) - 1}); if ($pad > strlen($text)) return false; if (strspn($text, chr($pad), strlen($text) - $pad) != $pad) return false; $ret = substr($text, 0, -1 * $pad); return $ret; } private function _hex2bin($hex = false){ $ret = $hex !== false && preg_match('/^[0-9a-fA-F]+$/i', $hex) "H*", $hex) : false; return $ret; } }
使用实例
<"xcrypt.php"; echo '<pre>'; ////////////////////////////////////// $a = isset($_GET['a']) ? $_GET['a'] : '测试123'; //密钥 $key = '12345678123456781234567812345678'; //256 bit $key = '1234567812345678'; //128 bit $key = '12345678'; //64 bit //设置模式和IV $m = new Xcrypt($key, 'cbc', 'auto'); //获取向量值 echo '向量:'; var_dump($m->getIV()); //加密 $b = $m->encrypt($a, 'base64'); //解密 $c = $m->decrypt($b, 'base64'); echo '加密后:'; var_dump($b); echo '解密后:'; var_dump($c); ///////////////////////////////////////// echo '</pre>';
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
黑松山资源网 Design By www.paidiu.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
黑松山资源网 Design By www.paidiu.com
暂无评论...
更新日志
2025年03月05日
2025年03月05日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]