LINUX.ORG.RU

прооооостенькая библиотека для python для подписи/проверки

 ,


0

2

нужна маленькая и простенькая библиотека на чистом python, которая умеет ровно три вещи

* сгенерировать приватный и публичный ключ

* подписать приватным ключом некое сообщение

* проверить его подлинность при помощи публичного ключа

библиотека должна использовать только стандартную библиотеку python и быть максимально компактной

быстродействие и крипкостойкость - в разумных пределах, то есть если библиотека размером 120 байт, проверяет ключ 1 секунду, и ключ можно подобрать за двое суток перебора - то это отличная совокупность качеств :)

★★★★★
Ответ на: комментарий от buratino

Любая Библиотека или crypto модуль любой окодокриптовой разработки

anonymous
()
Ответ на: комментарий от buratino

Ключи в рса числовые, так что с этим проблем нет. Можешь заюзать стандартный pkcs:

In [3]: pub, priv = rsa.newkeys(512)

In [4]: pub.save_pkcs1()
Out[4]: b'-----BEGIN RSA PUBLIC KEY-----\nMEgCQQCdOhRjqCph/meKPpvW5f/hlt37yisrUoNbJMmHEB5Wj+DED/qXCOPPmlQC\nhkjm7NuxtSoYPakCwizYzKDdfh/hAgMBAAE=\n-----END RSA PUBLIC KEY-----\n'

In [5]: priv.save_pkcs1()
Out[5]: b'-----BEGIN RSA PRIVATE KEY-----\nMIIBPAIBAAJBAJ06FGOoKmH+Z4o+m9bl/+GW3fvKKytSg1skyYcQHlaP4MQP+pcI\n48+aVAKGSObs27G1Khg9qQLCLNjMoN1+H+ECAwEAAQJARTv9HIFB4JMBjxvQzgnL\n6s/fgm/dIJ+eHjWN1L7hAinwHhACmOBUrd84Cqb3UG6sF56xDly2F2L6hbe3zh7+\nnQIjAKpLDnSPq29UtCjC/luZTN3Zq8EL8c4btWkLn+AJBVn8qrMCHwDsW4ffNorf\naF7TEIg6WMmB8XceOw/jXcg/fcNC5RsCIinm+hGYYHiugP4erPPhDtbv/qErzT4H\n92V3pMk9rwFreJ0CHwC3OED8bHh8tJiFPxSLPlZ+r6LqQViQpRtc9G2QBq8CIh/2\nn8kN4QmfWNxXhd/2M7cdD2qXk+TzkJql/Li5PsEKZ2Q=\n-----END RSA PRIVATE KEY-----\n'
provaton ★★★★★
()
Ответ на: комментарий от provaton

а что будет, если вот эти бегины и энды вырезать? мне это надо как-то ещё в поля текстового ввода браузера вставлять, так что желательно покороче :)

buratino ★★★★★
() автор топика
Ответ на: комментарий от provaton

Если вырезать, то функция load_pkcs работать не будет )

я знаю :)

Можешь их просто добавлять к юзерскому вводу.

ну, видимо так и придётся. спасибо за библиотеку :)

buratino ★★★★★
() автор топика
Ответ на: комментарий от provaton

а можно ловить VerificationError без try-except? или чтобы оно возвращало False, а не Error, на неверном ключе? :)

buratino ★★★★★
() автор топика
Ответ на: комментарий от buratino

если понимать что такое подпись можно и без библиотеки ее реализовать, то-есть на стандартной, к примеру

``` def sign(data, salt): return md5(md5(data + md5(salt)))

def verify(signature, data, salt): return sign(data, salt) == signature

data = «string to sign» salt = «some secret» send({«salt»: salt, «data»: data, «signature»: sign(data, salt)}) ```

далее ``` verify(request.signature, request.data, request.salt) ```

библиотечку им простенькую, уебков сборище

anonymous
()
Ответ на: комментарий от anonymous

библиотечку им простенькую

ну так я примерно 120 байт и планировал. просто смысла нет *переизобретать не как у всех*

buratino ★★★★★
() автор топика
Ответ на: комментарий от anonymous

я хотел написать *как это сделать хэшами*, но просто забыл

а rsa ещё и шифрование умеет, тоже пригодицца :)

buratino ★★★★★
() автор топика
Ответ на: комментарий от anonymous

я тока не понял, где в этой схеме привкей и пабкей

buratino ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.