Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques tierces Python Discussion :

Equivalence entre commande Linux et GNUPG encrypt_file


Sujet :

Bibliothèques tierces Python

  1. #1
    Membre à l'essai
    Equivalence entre commande Linux et GNUPG encrypt_file
    Bonjour,

    Je développe un programme python qui crypte un fichier json.
    En shell Linux la commande est toute simple
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    gpg  --batch --yes  --passphrase MonMotDePasse --symmetric --output fichier.gpg fichier.json


    Mais en Python là je tourne en rond (ce qui suit est un bout de code à la volée)
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    G = gnupg.GPG(gnupghome='/home/user/.gnupg')
    F=open('fichier.json','rb')
    status=G.encrypt_file(F,recipients=['moi@email.com'],output='fichier.gpg')
    F.close()

    Mon répertoire de clés est bon, je l'utile pour décrypter (en python).
    Je ne sais pas du tout à quoi sert le recipients ??? En shell je ne l'ai jamais utilisé (je pense).
    Quand je lance il ne me met pas d'erreur mais le status me dit"pas de données".

    PS: évidemment je mets des données valides pour user MonMotDePasse et moi@email.com !

    Any idea ?

  2. #2
    Membre à l'essai
    Bonsoir,
    Je pense avoir avancé sur la solution...
    A la lecture de ce post, j'y ai vu que l'option symmetric nécessitait le paramètre de recipients à None.
    Ainsi, avec la syntaxe suivante:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    status=G.encrypt_file(F,symmetric='AES256',recipients=None,passphrase='MonMotDePasse',output='fichier.gpg')

    un fichier crypté semble être produit.
    À voir si par la suite il est utilisable mais là... il se fait tard.
    À demain peut-être

  3. #3
    Expert éminent sénior
    Salut,

    Citation Envoyé par Vangeles Voir le message
    Je pense avoir avancé sur la solution...
    A la lecture de ce post, j'y ai vu que l'option symmetric nécessitait le paramètre de recipients à None.
    python-gnupg rend accessible au programmeur Python les fonctionnalités de gnupg... et suppose connaitre gnupg. Le bon document pour apprendre/savoir comment çà fonctionne et comment l'utiliser est celui ci.

    Vous y trouverez tout ce qu'il faut savoir pour faire la différence entre chiffrement symétrique et chiffrement avec clef publique (et pourquoi il y a un recipient dans un cas et pas dans l'autre).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Membre à l'essai
    Citation Envoyé par wiztricks Voir le message
    Salut,
    ....pour apprendre/savoir comment çà fonctionne et comment l'utiliser est celui ci....
    - W
    Bonjour,
    Merci pour le lien, même si ça m'oblige à revoir un peu mon anglais.
    J'avais tout récemment trouvé aussi un sujet connexe sur la cryptographie (introduction).
    Avec ces deux références je devrais pouvoir m'en sortir et surtout (comme toujours) essayer de comprendre.
    Je mettrai ce sujet à résolu quand j'aurai réglé mon programme de test (aujourd'hui sûrement) pour ensuite regarder les liens sur les cours et tutoriaux que vous proposez en signature.
    Cordialement.

  5. #5
    Membre à l'essai
    Mon programme de test (encrypt puis decrypt)

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import gnupg
    G = gnupg.GPG(gnupghome='/home/user/.gnupg')
    with open('totp.json','rb') as F:
    	status=G.encrypt_file(F,symmetric='AES256',recipients=None,output='totp.gpg')
    F.close()
    print(status.ok)
    input("Suite...")
    with open('totp.gpg','rb') as F:
    	status=G.decrypt_file(F,output='totp.txt')
    F.close()
    print(status.ok)

    Les deux fichiers totp.json et totp.txt sont bien identiques.
    Ne pas mettre de mot de passe (passphrase) oblige à le demander (c'est mieux).

    Voilà, je clos