【发布时间】:2011-09-29 17:39:56
【问题描述】:
请帮助我在 PHP 中获取此 python 脚本的确切 md5 值
Python 脚本
def md5code(params):
params = {'identifier': ' ', 'amount': '0.0', 'code': 'UNIA'}
req = dict([[key, params.get(key, '')] for key in ['code', 'identifier', 'amount']])
secret = '2fd0bba6b1774ed391c1ff8467f52a5d'
text = ":".join([req[x] for x in ['code', 'identifier', 'amount']] + secret)
return md5(text).hexdigest().upper()
返回值为:5D316CD2311678A1B12F6152988F3097
PHP 脚本
$secret = '2fd0bba6b1774ed391c1ff8467f52a5d';
$code = 'UNIA';
$valid_institution = array('amount' => '0.0', 'code' => $code, 'identifier' => ' ');
foreach($valid_institution as $k => $v) {
$text = implode(":", $v[$k] + $secret);
}
print strtoupper(hash("md5", $text));
返回值为:D41D8CD98F00B204E9800998ECF8427E
我希望 PHP 脚本返回一个准确的 md5 值,但事实并非如此。
任何建议将不胜感激。
谢谢
【问题讨论】:
-
@JonathanM 我已经编辑了这个问题。谢谢
-
@stereofrog 是的!输出没有区别。
-
你试过把它包装在一个函数中吗?您是否尝试过实际处理您使用的参数的顺序?您是否真正验证过 python md5().hexdigest() 是否匹配 php 的 hash() 函数?你 .... ? .... ??????? - 代码显然有很多问题,看起来编写它的人实际上并不关心编码。你的问题听起来有点你想让别人完成工作。
-
由于
[ ... ] + secret而开始的Python代码无效 -
@hakre 这是一个继承的项目,我必须扩展现有的内容而不是更改它。我不认为这有什么问题。因此,将其标记为无用是模糊和粗鲁的。你不知道为什么需要它。那么为什么要通过一个有偏见和不必要的结论呢?