Почему бы не преобразовать строку в целое число формы YYYYMMDDHHMMSS? Каждое приращение времени создавало бы большее целое число, и вы могли бы фильтровать целые числа, а не беспокоиться о преобразовании в время ISO.
Если вы работаете в среде, которая включает GnuPG и Python> = 2.4, вы также можете рассмотреть такой инструмент, как python-gnupg . (Заявление об отказе от ответственности: я сопровождаю этот проект.) Он оставляет тяжелую работу gpg
и предоставляет довольно простой API.
Обзор API:
>>> import gnupg >>> gpg = gnupg.GPG(gnupghome='/path/to/keyring/directory') >>> gpg.list_keys() [{ ... 'fingerprint': 'F819EE7705497D73E3CCEE65197D5DAC68F1AAB2', 'keyid': '197D5DAC68F1AAB2', 'length': '1024', 'type': 'pub', 'uids': ['', 'Gary Gross (A test user) ']}, { ... 'fingerprint': '37F24DD4B918CC264D4F31D60C5FEFA7A921FC4A', 'keyid': '0C5FEFA7A921FC4A', 'length': '1024', ... 'uids': ['', 'Danny Davis (A test user) ']}] >>> encrypted = gpg.encrypt("Hello, world!", ['0C5FEFA7A921FC4A']) >>> str(encrypted) '-----BEGIN PGP MESSAGE-----\nVersion: GnuPG v1.4.9 (GNU/Linux)\n \nhQIOA/6NHMDTXUwcEAf ... -----END PGP MESSAGE-----\n' >>> decrypted = gpg.decrypt(str(encrypted), passphrase='secret') >>> str(decrypted) 'Hello, world!' >>> signed = gpg.sign("Goodbye, world!", passphrase='secret') >>> verified = verified = gpg.verify(str(signed)) >>> print "Verified" if verified else "Not verified" 'Verified'
Как насчет PyCrypto (ранее http://www.amk.ca/python/code/crypto.html ) ??
pycrypt на самом деле представляет собой простой модуль шифрования / дешифрования AES, построенный на основе pycrypto , как и другие упомянутые вами модули - обратите внимание, что последний переходит на pycrypto URL-адрес .org, поскольку он меняет разработчиков, а стабильные версии и документация все еще находятся на сайте автора . Помимо упомянутых вами более простых в использовании оболочек, одним из преимуществ pycrypto является то, что его подмножество на чистом питоне поставляется с Google App Engine, поэтому знакомство с ним будет полезно, если вы когда-нибудь хотите разместить там какой-либо код.
Основная альтернатива (еще один мощный и сложный проект, например pycrypto) - это pyopenssl , который представляет собой довольно обычную оболочку («тонкая оболочка», как описывает автор) OpenSSL (это может быть плюсом, если вы привыкли кодировать на C с вызовами OpenSSL). Альтернативная упаковка, полная (поставляется с необходимыми библиотеками) и, возможно, более безопасная с юридической точки зрения (за исключением частей, в отношении которых есть патентные споры или сомнения) распространяется egenix .
Оба основных проекта (pycrypto и pyopenssl) пережили длительные периоды более или менее бездеятельности, поскольку первоначальные авторы переходили к другим вещам, но оба активно развиваются и снова поддерживаются, что всегда является хорошим признаком.
Я не знаю простых в использовании оболочек на на вершине pyopenssl (скорее всего, есть, но они не были опубликованы, как те, что на вершине pycrypto), и поэтому, если, как кажется, вы заботитесь о простоте использования и не хотите сами писать оболочки,
Я только что провел такой опрос на прошлой неделе и принял M2Crypto, который на сегодняшний день кажется самой продвинутой оболочкой. выше openssl (нашел его в нескольких списках рекомендаций при поиске в Google). Я также пробовал pycrypto, но в нем отсутствуют управление сертификатами и стандартное управление форматами файлов ключей, которые есть в M2Crypto (с pycrypto вы должны выделять / удалять ключи или писать свой собственный менеджер ключей для распространенных форматов).
Я обнаружил, что M2Crypto было довольно легко использовать использовать и быстро смог разработать то, что мне было нужно (подписанный и зашифрованный формат пакета).
Однако я рекомендую загрузить полный пакет, а не просто установить его, потому что в пакете вы также получаете хорошие примеры (посмотрите демо-каталог
Вот ссылка http://pypi.python.org/pypi/M2Crypto/0.20. 1
Недостатком может быть то, что вы используете python 3.0, я застрял с 2.5 на работе (надеюсь, скоро будет 2.6) и не знаю, работает ли M2Crypto с python 3.0
Я мало практиковался с ним пока ставьте, если у вас с ним конкретные проблемы просто спросите здесь. Кто-нибудь может ответить.