Python PyCryptodome алгоритм цифровой подписи с DSS - PullRequest
0 голосов
/ 24 мая 2018

в Python Pycryptodome пример по умолчанию для DSA-DSS Привет, ребята. Я задал этот вопрос, но это не очень умно, я удалил в своем профиле и просто спрашиваю из учетной записи своих друзей.

Проблема в том, что я пытался использовать шифрование с открытым ключом, подпись, проверку, так что ...

До завтра все будет хорошо, но я сталкиваюсь с DSA-DSS ECDSA.Если вы посмотрите на картинку, я думаю, что есть какая-то проблема, на которую я нацелен. Они делают «подписывающего» с закрытым ключом в DSS, но они не используют его в подписи.Вместо этого он использует ключевой знак .Even на уровне проверки (на рисунке он не появился), они вызывают открытый ключ из файла "PEM" и пытаются проверить без вызова DSS new () снова.

Так что если высравните мой код и картинку, и вы заметите, что я хочу сказать ...

from Crypto.PublicKey import DSA
from Crypto.Signature import DSS
from Crypto.Hash import SHA256
key = DSA.generate(2048)
publickey=key.publickey()
message = b"Hello"
hash_obj = SHA256.new(message)
signer = DSS.new(key, 'fips-186-3')
signature = signer.sign(hash_obj)

Итак, я пытаюсь проверить сообщение ... Я не создал объект снова, и я вызвал открытый ключ изключ, который я показал выше.

pkey=DSS.new(publickey,'fips-186-3')
pkey.verify(hash_obj,signature)
False

Итак, как вы можете видеть, я получил «False». Я попробовал это на ECDSA - DSS снова вернул то же самое.так что, если вы получили то, что я хочу сделать, пожалуйста, помогите, что я хочу?

1 Ответ

0 голосов
/ 25 мая 2018

Документы для метода verify говорят:

Повышает: ValueError - если подпись не является подлинной

и он всегда возвращает False, если он успешен.

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

В общем случае вам понадобится что-то вроде:

try:
    pkey.verify(hash_obj,signature)
    valid = True
except ValueError:
    valid = False

В вашем коде тот факт, что он не вызывает исключение, показывает, что проверка прошла успешно и подпись действительно действительна.

...