求一个PHP函数的Python版本

simonw simonw 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
这是discuz 中的加密解密函数, 求完全等效的python实现版本.

function _authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) {
$ckey_length = 4;

$key = md5($key ? $key : UC_KEY);
$keya = md5(substr($key, 0, 16));
$keyb = md5(substr($key, 16, 16));
$keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : '';

$cryptkey = $keya.md5($keya.$keyc);
$key_length = strlen($cryptkey);

$string = $operation == 'DECODE' ? base64_decode(substr($string, $ckey_length)) : sprintf('%010d', $expiry ? $expiry + time() : 0).substr(md5($string.$keyb), 0, 16).$string;
$string_length = strlen($string);

$result = '';
$box = range(0, 255);

$rndkey = array();
for($i = 0; $i <= 255; $i++) {
$rndkey[$i] = ord($cryptkey[$i % $key_length]);
}

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, 10) == 0 || substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) {
return substr($result, 26);
} else {
return '';
}
} else {
return $keyc.str_replace('=', '', base64_encode($result));
}

}
...全文

相关推荐

LibPFP:LibPFP是Python中Php函数的实现。-开源

适用于PHP程序员的Python库。 LibPFP是Python中Php函数的实现。 是一个通用的免费图书馆。

阿礅

php的python扩展

2017年8月24日,下载前,请先看有没有新的更新。python作为php扩展

超级酸菜鱼

python中实现php的var_dump函数功能

最近在做python的web开发(原谅我的多变,好东西总想都学着。。。node.js也是),不过过程中总遇到些问题,不管是web.py还是django,开发起来确实没用php方便,毕竟存在的时间比较短,很多不完善的地方。 比如我在调试php中最常用的函数,var_dump,在python里找不到合适的替代函数。php中var_dump是一个特别有用的函数,它可以输出任何变量的值,不管你是一个对象还是一个数组,或者只是一个数。它总能用友好的方式输出,我调试的时候经常会需要看某位置的变量信息,调用它就很方便: 但是开发python的时候就没有太好的替代方案。 之前想到repr,但这个函数只是调用

weixin_38501826

phpy:phPy是一种从Python调用旧版PHP函数的简单方法

P phPy是从Python调用旧版PHP函数的简单方法。 安装 您可以从PyPI安装软件包: $ pip install phpy 要求 phPy使用php5-cli。 您必须使用apt-get或yum安装php5-cli软件包。 $ apt-get install php5-cli $ yum install php 例子 function LegacyPHPFunction ( $ arg1 , $ arg2 , $ arg3 ) { //... original codes... $ result = array ( "foo" => $ arg1 , "bar" => $ arg2 , ); echo json_encode ( $ result ); } from phpy import PHP #php

咣荀

Python-php2go使用Golang实现PHP的常见内置函数

php2go - 使用Golang实现PHP的常见内置函数。已实现约140多项功能。

weixin_39841365
评论 6
收藏 已收藏
分享
返回顶部
simonw
脚本语言 37,737 成员 34,208 内容