精易论坛
标题:
易语言+PHP 文本加解密 带秘钥
[打印本页]
作者:
xiaotao110
时间:
2022-12-20 14:34
标题:
易语言+PHP 文本加解密 带秘钥
提供易语言 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));
}
}
复制代码
作者:
嫂子
时间:
2022-12-20 14:49
就是Discuz的 AUTH算法
作者:
清风徐来2
时间:
2022-12-20 16:43
感谢分享
作者:
剑轶
时间:
2022-12-20 18:48
这个看着不像是RC4?
作者:
Wz613613
时间:
2022-12-21 08:36
感谢分享,很给力!~
作者:
kvx55c
时间:
2022-12-21 14:36
努力挣分中
作者:
一指温柔
时间:
2022-12-21 14:42
感谢分享,支持开源~
作者:
吃干饭的锅
时间:
2022-12-21 15:04
感谢分享,支持你
作者:
396384183
时间:
2022-12-23 10:10
很好谢谢分享11
作者:
小布仕奇
时间:
2022-12-28 15:01
666666666666666666666
作者:
六先生
时间:
2023-1-5 16:08
支持开源~!感谢分享
作者:
xiaotao110
时间:
2023-1-8 15:12
嫂子 发表于 2022-12-20 14:49
就是Discuz的 AUTH算法
应该是吧 PHP网上找的 然后自己弄了个易语言版本 刚好最近用得上
作者:
嫂子
时间:
2023-1-8 15:48
剑轶 发表于 2022-12-20 18:48
这个看着不像是RC4?
RC4+MD5变异
欢迎光临 精易论坛 (https://125.confly.eu.org/)
Powered by Discuz! X3.4