Несовместимые результаты с openssl при вызове из Python - PullRequest
0 голосов
/ 18 ноября 2018

Вызов verify_sha256_hash (пароль, hash_expected) с

паролем, hash_expected = 'Быстрая коричневая лиса перепрыгивает через ленивую собаку', ''

В результате получается "94acf27cc065449e756a4f164ed5a5254d5d5d5d5", cd5d5d5d5d5d5d5d5d5d5d5d5d3106404мы получаем из командной строки, думал, что они вызывают одни и те же двоичные файлы openssl.

То есть

$ echo "Быстрая коричневая лиса перепрыгивает через ленивую собаку" |openssl dgst -sha256
(stdin) = c03905fcdab297513a620ec81ed46ca44ddb62d41cbbd83eb4a5a3592be26a69

или $ echo «Быстрая коричневая лиса перепрыгивает через ленивую собаку» |openssl sha256

(stdin) = c03905fcdab297513a620ec81ed46ca44ddb62d41cbbd83eb4a5a3592be26a69

Вот коды Python для вызовов:

def verify_sha256_hash(passcode, hash_expected):
    command = 'echo "' + passcode + '" | ' + openssl_path + 'openssl dgst -sha256'
    process_resultant = subprocess_cmd(command)

    if (process_resultant == hash_expected):
        print('Verification OK')
    else:
        print('Verification OK NOT')

    return

def subprocess_cmd(command):
    process = subprocess.Popen(command, stdout=subprocess.PIPE, shell=True)
    print("command: ", command)
    process_resultant = str(process.communicate()[0].strip())
    process_resultant = process_resultant.lstrip('b\'(stdin)= ').rstrip('\'')
    print("process_resultant: ", process_resultant)

    return process_resultant

Как это можно исправить?Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...