提供易语言 PHP的加解密方法, 可用于关键信息加密使用(安全性不太高, 拿到秘钥就能破J, 但是总比没有好)
易语言 加解密
- .版本 2
- .支持库 dp1
- .子程序 小涛_加解密, 文本型
- .参数 文本内容, 文本型
- .参数 是否解密, 逻辑型
- .参数 秘钥, 文本型
- .局部变量 秘钥长度, 整数型
- .局部变量 文本长度, 整数型
- .局部变量 i, 整数型
- .局部变量 rndkey, 整数型, , "256"
- .局部变量 box, 整数型, , "256"
- .局部变量 j, 整数型
- .局部变量 tmp, 整数型
- .局部变量 a, 整数型
- .局部变量 re, 文本型
- .局部变量 返回内容, 文本型
- 秘钥 = 到文本 (取数据摘要 (到字节集 (秘钥)))
- 秘钥长度 = 取文本长度 (秘钥)
- .如果 (是否解密 = 真)
- 文本内容 = 到文本 (编码_BASE64解码 (文本内容, 真))
- .否则
- 文本内容 = 取文本左边 (取数据摘要 (到字节集 (文本内容 + 秘钥)), 8) + 文本内容
- .如果结束
- 文本长度 = 取文本长度 (文本内容)
- .计次循环首 (256, i)
- rndkey [i] = 取代码 (取文本中间 (秘钥, (i - 1) % 秘钥长度 + 1, 1), )
- box [i] = i - 1
- .计次循环尾 ()
- j = 0
- .计次循环首 (256, i)
- j = (j + box [i] + rndkey [i]) % 256
- tmp = box [i]
- box [i] = box [j + 1]
- box [j + 1] = tmp
- .计次循环尾 ()
- a = 0
- j = 0
- .计次循环首 (文本长度, i)
- a = (a + 1) % 256
- j = (j + box [a + 1]) % 256
- tmp = box [a + 1]
- box [a + 1] = box [j + 1]
- box [j + 1] = tmp
- re = re + 字符 (小涛_xor (取代码 (取文本中间 (文本内容, i, 1), ), box [到整数 ((box [a + 1] + box [j + 1]) % 256) + 1]))
- .计次循环尾 ()
- .如果 (是否解密 = 真)
- 返回内容 = 取文本中间 (re, 9, 取文本长度 (re))
- .否则
- 返回内容 = 子文本替换 (编码_BASE64编码 (到字节集 (re)), “=”, “”, , , 真)
- .如果结束
- 返回 (返回内容)
- .子程序 小涛_xor, 整数型, , 位异或
- .参数 Value1, 整数型
- .参数 Value2, 整数型
- 置入代码 ({ 139, 69, 8, 51, 69, 12, 137, 236, 93, 194, 8, 0 })
- 返回 (0)
复制代码
PHP 加解密
- /**
- * 文本加解密
- */
- function textEnc($string,$operation,$key=''){
- $key=md5($key);
- $key_length=strlen($key);
- $string=$operation=='D'?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=='D'){
- 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));
- }
- }
复制代码
|