SHA256 хешируют в Python 2.4

Стандарт C++ гарантирует следующее:

static_cast луг указатель на и от void* сохраняет адрес. Таким образом, в следующем, a, b и c вся точка к тому же адресу:

int* a = new int();
void* b = static_cast<void*>(a);
int* c = static_cast<int*>(b);

reinterpret_cast только гарантии, что при кастинге указателя на другой тип, и затем reinterpret_cast это назад к исходному типу , Вы получаете исходное значение. Таким образом в следующем:

int* a = new int();
void* b = reinterpret_cast<void*>(a);
int* c = reinterpret_cast<int*>(b);

a и c содержат то же значение, но значение [1 111] является неуказанным. (на практике это будет обычно содержать тот же адрес как [1 112] и c, но это не указано в стандарте, и это не может быть верно на машинах с более сложными системами памяти.)

Для кастинга к и от [1 114], static_cast должен быть предпочтен.

7
задан Community 23 May 2017 в 12:22
поделиться

2 ответа

Да, можно. В Python 2.4 появился модуль SHA-1, который делает именно это. См. документацию .

Однако имейте в виду, что импорт кода из этого модуля вызовет DeprecationWarnings при запуске с более новым Python.

Хорошо, поскольку требования были ужесточены до SHA-256 с использованием модуля SHA-1 в стандартной библиотеке недостаточно. Я бы посоветовал проверить pycrypto , он имеет реализацию SHA-256. Существуют также двоичные версии Windows, соответствующие старым Pythons, следуйте ссылкам со старой страницы PyCrypto Эндрю Кучлингса .

10
ответ дан 6 December 2019 в 08:16
поделиться

Вы можете использовать модуль sha , если вы хотите сохранить совместимость, вы можете импортировать его следующим образом:

try:
    from hashlib import sha1
except ImportError:
    from sha import sha as sha1
8
ответ дан 6 December 2019 в 08:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: