2008-09-18 10 views
17

Je veux chiffrer quelques fichiers en utilisant python quelle est la meilleure façon Je peux utiliser gpg/pgp en utilisant des bibliothèques python standard/célèbres?quelle est la meilleure/plus facile à utiliser bibliothèque de chiffrement en python

+0

Le cryptage est un sujet délicat. Veuillez ajouter plus d'informations sur ce que vous cryptez et pourquoi, et comment votre application doit le gérer. Plus précisément, vous devez parler de la façon dont les secrets doivent être gérés - cela déterminera si vous devez utiliser le cryptage par clé publique ou simplement un secret partagé. – Allen

+0

Fondamentalement, je veux juste crypter certains fichiers de configuration afin qu'il ne soit pas lisible acheter d'autres personnes, mais mon programme seulement. Je ne veux pas de solution infaillible ici parce que je vais devoir déchiffrer des fichiers dans mon programme ou peut-il y avoir une façon infaillible de le faire? –

Répondre

8

PyCrypto semble être le meilleur.

+1

Pourquoi dites-vous cela? –

+0

C'est complet et l'auteur original AMK est un développeur Python respecté. –

+0

Oui, mais son mainteneur actuel n'a aucune sortie (comme vérifié aujourd'hui) –

7

Essayez KeyCzar

Très facile à mettre en œuvre.

4

Voir le projet Keyczar de Google, qui fournit un bon ensemble d'interfaces aux fonctionnalités de PyCrypto.

6

J'utilise GPGme La principale force de GPGme est qu'il lit et écrit des fichiers au standard OpenPGP (RFC 4880) ce qui peut être important si vous voulez interopérer avec d'autres programmes PGP. Il a un Python interface. Attention: c'est une interface de bas niveau, pas très Pythonic.

Si vous lisez en français, see examples.

Voici un, pour vérifier une signature:

signed = core.Data(sys.stdin.read()) 
plain = core.Data() 
context = core.Context() 

context.op_verify(signed, None, plain) 
result = context.op_verify_result() 

sign = result.signatures 
while sign: 
    if sign.status != 0: 
     print "BAD signature from:" 
    else: 
     print "Good signature from:" 
    print " uid:  ", context.get_key(sign.fpr, 0).uids.uid 
    print " timestamp: ", sign.timestamp 
    print " fingerprint:", sign.fpr 
    sign = sign.next 
5

J'utilise pyOpenSSL, c'est une liaison en python pour OpenSSL qui existe depuis longtemps et qui est très bien testée. J'ai fait quelques benchmarks pour mon application, ce qui est très crypto intensif et il a gagné contre pyCrypto. YMMV.