🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] ## 一、知识点 常见四个位运算符:&(按位与),|(按位或),^(按位异或),~(按位取反) &(按位与):对应位同时为1时,在&运算后则为1,否则为0(简言之:全1为1,否则为0) |(按位或):对应位有一个为1时,在|运算后则为1,同为0时则为0(简言之:全0为0,有1为1) ^(按位异或):对应位不同时为1时,在^运算后为1,同时为0时则为0,同时为1时^运算后也是0(简言之:不同为1,相同为0) ~(按位取反):$a+(~$a)=-1 在计算机中,负数以其正值的补码形式表达。 在这里我们就要知道三个概念了,原码、反码和补码。 原码:一个整数,按照绝对值大小转换成的二进制数,称为原码。 8的原码为:0000 0000 0000 0000 0000 0000 0000 1000 反码:将二进制数按位取反,所得的新二进制数称为原二进制数的反码。取反操作指:1变0, 0变1。 8按位取反:1111 1111 1111 1111 1111 1111 1111 0111 补码:反码加1称为补码。也就是说,要得到一个数的补码,先得到反码,然后将反码加上1,所得数称为补码。 正数的补码与其原码相同;负数的补码是在其反码的末位加1 反码加1:1000 0000 0000 0000 0000 0000 000 1001;这样就得负数的正值的补码形式。也就是-9了。 参考: https://blog.csdn.net/qq_28602957/article/details/52141431 http://www.cnblogs.com/setsail/archive/2013/05/22/3093542.html http://my.oschina.net/WarRome/blog/90707 ## 二、自定义加密函数 文件位置:Index/Common/common.php ``` /** * 异位或加密字符串 * @param [String] $value [需要加密的字符串] * @param [integer] $type [加密解密(0:加密,1:解密)] * @return [String] [加密或解密后的字符串] */ function encryption ($value, $type=0) { $key = md5(C('ENCTYPTION_KEY')); if (!$type) { return str_replace('=', '', base64_encode($value ^ $key)); } $value = base64_decode($value); return $value ^ $key; } ``` ## 三、配置文件 ``` <?php return array( //用于异位或加密的KEY 'ENCTYPTION_KEY' => 'www.psnav.com', //自动登录保存时间 'AUTO_LOGIN_TIME' => time() + 3600 * 24 * 7, //一个星期 ); ?> ```