Тот же хеш объекта PHP в Python

У меня небольшая проблема: С одной стороны, у меня есть синтаксический анализатор, который берет строку, превращает ее в объект PHP и возвращает хешированную строку этого объекта. С другой стороны, новая версия парсера написана на Python, и новый парсер принимает строку, хеширует ее и возвращает также как строку.

И тут у меня проблема совместимости. Та же строка хешируется как объект PHP и хешируется как строка, возвращающая другой результат. Есть ли способ получить объект PHP в Python, чтобы получить тот же результат, что и в PHP-парсере? Вот отрывки кода:

PHP:

function num_converter() {
    $string_1 = '1234';
    $string_2 = '567890';

    $hash = String_to_hash::stringHash((object)array(
                        'number'=>$string_1.' '.$string_2,
                        'number2'=>$number3,
                ));
    return array_push($Reply, $hash);
}

А вот такой же код функциональности на Python:

def num_converter():
    string_1 = '1234'
    string_2 = '567890'
    number3 = digits # type of int

    string_to_hash = string_1 + " " + string_2 + str(number3)
    return hashlib.md5(string_to_hash.encode()).hexdigest().upper()

Не могли бы вы поделиться каким-нибудь примером вывода, на котором видна разница?

Nico Haase 13.08.2018 13:13
String_to_hash не является встроенным PHP, поэтому мы не можем сказать, что он выводит, а что нет. Точно так же self.get_raw определяется в другом месте. Убедитесь, что публикуемый вами код представляет собой минимальный, самодостаточный правильный пример, который мы действительно можем запустить и поэкспериментировать.
Amadan 13.08.2018 13:17
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
2
541
1

Ответы 1

Обязательно используйте тот же алгоритм хеширования. Например:

PHP

php > echo hash('sha512', 'foo');

Результат: f7fbba6e0636f890e56fbbf3283e524c6fa3204ae298382d624741d0dc6638326e282c41be5e4254d8820772c5518a2c5a8c0c7f7eda19594a7eb539453e1ed7

Python

import hashlib
hashlib.sha512(b'foo').hexdigest()

Результат: 'f7fbba6e0636f890e56fbbf3283e524c6fa3204ae298382d624741d0dc6638326e282c41be5e4254d8820772c5518a2c5a8c0c7f7eda19594a7eb539453e1ed7'

Другие вопросы по теме