Нужен PHP-скрипт для возврата точного соответствия Python-скрипта - PullRequest
0 голосов
/ 29 сентября 2011

Пожалуйста, мне нужна помощь, чтобы получить точное значение md5 этого скрипта Python на PHP

Скрипт 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

PHPscript

$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, но это не так.

Любые предложения будутбыть оцененным.

Спасибо

Ответы [ 3 ]

2 голосов
/ 29 сентября 2011

хорошо, кажется, вы используете foreach неправильно.Попробуйте это:

$secret = '2fd0bba6b1774ed391c1ff8467f52a5d';
$code = 'UNIA';
$valid_institution = array('amount' => '0.0', 'code' => $code, 'identifier' => ' ');
$text = 
    $valid_institution['code'] . ":" . 
    $valid_institution['identifier'] . ":" . 
    $valid_institution['amount'] . ":" . 
    $secret;

print strtoupper(hash("md5", $text)); 
1 голос
/ 29 сентября 2011

Действительный код Python может выглядеть следующим образом:

from hashlib import md5
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
print md5(text).hexdigest().upper()

, и это эквивалент PHP

<?php
$secret = '2fd0bba6b1774ed391c1ff8467f52a5d';
$code = 'UNIA';
$valid_institution = array(
    'code' => $code, 
    'identifier' => ' ',
    'amount' => '0.0');

$text = implode(':', $valid_institution) . $secret;
print strtoupper(hash("md5", $text)); 
?>
0 голосов
/ 29 сентября 2011
$secret = '2fd0bba6b1774ed391c1ff8467f52a5d';
$code = 'UNIA';
$valid_institution = array('amount' => '0.0', 'code' => $code, 'identifier' => ' ');
$text = implode(":", $valid_institution). $secret;
print strtoupper(hash("md5", $text)); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...