PHP_加密解密字符串
PHP_加密解密字符串.php
<?php
//加解密字符串函数,可以加密中文
/*
//加密
echo $encode = authcode('爱迪生', 'ENCODE', '3'); //DvAHOdGFqa8xK4CDLnbr2mE
//解密
echo $decode = authcode($encode, 'DECODE', '3'); //爱迪生
//密钥
$auth_key = 34577;
参数:$string字符串,$operation加密还是解密,$key密钥
*/
function authcode($string, $operation, $key = '')
{
    $key = md5($key ? $key : $GLOBALS['auth_key']);
    $key_length = strlen($key);
    $string = $operation == 'DECODE' ? base64_decode($string) : substr(md5($string . $key), 0, 8) . $string;
    $string_length = strlen($string);
    $rndkey = $box = array();
    $result = '';
    for ($i = 0; $i <= 255; $i++) {
        $rndkey[$i] = ord($key[$i % $key_length]);
        $box[$i] = $i;
    }
    for ($j = $i = 0; $i < 256; $i++) {
        $j = ($j + $box[$i] + $rndkey[$i]) % 256;
        $tmp = $box[$i];
        $box[$i] = $box[$j];
        $box[$j] = $tmp;
    }
    for ($a = $j = $i = 0; $i < $string_length; $i++) {
        $a = ($a + 1) % 256;
        $j = ($j + $box[$a]) % 256;
        $tmp = $box[$a];
        $box[$a] = $box[$j];
        $box[$j] = $tmp;
        $result .= chr(ord($string[$i]) ^ $box[($box[$a] + $box[$j]) % 256]);
    }
    if ($operation == 'DECODE') {
        if (substr($result, 0, 8) == substr(md5(substr($result, 8) . $key), 0, 8)) {
            return substr($result, 8);
        } else {
            return '';
        }
    } else {
        return str_replace('=', '', base64_encode($result));
    }
}
?>
PHP_加密解密字符串的更多相关文章
- PHP的加密解密字符串函数
		程序中经常使用的PHP加密解密字符串函数 代码如下: /********************************************************************* 函数 ... 
- php 加密解密字符串
		/********************************************************************* 函数名称:encrypt 函数作用:加密解密字符串 使用方 ... 
- Java加密解密字符串
		http://www.cnblogs.com/vwpolo/archive/2012/07/18/2597232.html Java加密解密字符串 旧文重发:http://www.blogjava ... 
- django删除表重建&修改用户密码&base64加密解密字符串&ps aux参数说明&各种Error例子
		1.django的queryset不支持负索引 AssertionError: Negative indexing is not supported. 2.django向前端JavaScript传递列 ... 
- PHP加密解密字符串
		项目中有时我们需要使用PHP将特定的信息进行加密,也就是通过加密算法生成一个加密字符串,这个加密后的字符串可以通过解密算法进行解密,便于程序对解密后的信息进行处理. 最常见的应用在用户登录以及一些AP ... 
- [DEncrypt] RSACryption--RSA加密/解密字符串 (转载)
		点击下载 RSACryption.zip 这个类是关于加密,解密的操作,文件的一些高级操作1.RSACryption RSA 的密钥产生2.RSACryption RSA的加密函数3.RSACrypt ... 
- .net core 使用MD5加密解密字符串
		/// <summary> /// 加密 /// </summary> /// <param name="Text">要加密的文本</pa ... 
- MD5 加密解密字符串
		方法1: using System.Text; using System.Security.Cryptography; public string Hash(string toHash) { MD5C ... 
- Asp.net,C# 纯数字加密解密字符串
		也就是说加密后的数据不再是:N8lAaHMFtSAQgaf3+RUFng== 希望encryptedString是"1203877893704809384098328409234923840 ... 
随机推荐
- 实用的git log用法
			git log可以很方便地查看日志,可以根据自己需要,将日志按照特定格式显示,或者输出某种格式. 最原始的输出样式: $ git log commit ca82a6dff817ec66f4434200 ... 
- 使用xShell 连接 docker 使用说明
			方式一:当不知道docker里镜像的root密码的时候 1.从Docker Hub下载需要的镜像 docker pull 镜像名字 2.使用docker run命令启动容器 docker run -i ... 
- 极简 Node.js 入门 - 3.5 文件夹操作
			极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ... 
- oracle坑。
			char(2)的,后面的有一个空格.删不掉.在plsql里可以正常查.写死的sql在程序也可以正常查. 程序用占位符的形式,不能查出来.只能转成to_number select t.*,t.rowid ... 
- 数据去重Distinct,IEqualityComparer,IEquatable
			很多情况下我们查询数据需要去重重复数据,下面就记录三个去重的方法. Distinct 最基本的去重形式,直接查询出数据后使用Distinct方法进行字段去重. var strList = new Li ... 
- Fitness - 07.23 - Congratulation!
			倒计时161天 运动54分钟,共计5组半,5.8公里.拉伸5分钟. 每组跑步10分钟(6.5KM/h),走路1分钟(5.5KM/h). 终于突破了耐力跑的一天,可喜可贺! 差一点就到6公里了,觉得自己 ... 
- hdu 4010 Lct动态链接树
			#pragma comment(linker, "/STACK:1024000000,1024000000") #include <cstdio> #include & ... 
- HDU-多校2-Everything Is Generated In Equal Probability(公式+逆元)
			Problem Description One day, Y_UME got an integer N and an interesting program which is shown below: ... 
- 面试【JAVA基础】集合类
			1.ArrayList的扩容机制 每次扩容是原来容量的1.5倍,通过移位的方法实现. 使用copyOf的方式进行扩容. 扩容算法是首先获取到扩容前容器的大小.然后通过oldCapacity (oldC ... 
- Spring JPA 定义查询方法
			Spring JPA 定义查询方法 翻译:Defining Query Methods  存储库代理有两种方式基于方法名派生特定域的查询方式: 直接从方法名派生查询 自定义查询方式  可用选项基于 ... 
