web-dev-qa-db-fra.com

Comment chiffrer du texte en clair avec GnuPG?

J'ai beaucoup travaillé avec GnuPG ces derniers temps et j'en suis venu à dépendre de sa capacité à crypter des fichiers, etc.

Cependant, je travaille actuellement sur quelques projets qui impliquent la communication (c'est-à-dire le chat, le courrier électronique, etc.) où j'aimerais utiliser les clés existantes pour crypter/décrypter le texte lui-même par opposition à un "conteneur" tel qu'un fichier ou un disque image.

Je suppose que je pourrais chiffrer le conteneur, convertir le flux en base64 (ou quelque chose de approprié) puis marquer le texte comme tel, mais je suppose qu'il existe une solution plus simple. Je suis sûr qu'il manque quelque chose de simple, mais bon, je le manque.

Des idées?

28
humble_coder

Qu'en est-il de:

$ echo "hello" | gpg --symmetric --armor --passphrase "asdf"
-----BEGIN PGP MESSAGE-----
Version: GnuPG v1.4.11 (Darwin)

jA0EAwMCWfhRZo0AiwVgyRw5Q26Tf+i6OCiQOVoUNJZEfz5ekBJw6BdVpE88
=ecV3
-----END PGP MESSAGE-----

Si c'est ce que vous recherchez, vous devrez configurer gpg-agent pour gérer la phrase secrète… La transmettre comme ça depuis la ligne de commande est assez peu sécurisée (comme n'importe quel programme sur la machine pourrait la voler).

Et si par "clés existantes" vous voulez dire "paires de clés pub/priv existantes", alors:

$ echo "hello" | gpg --encrypt --armor -r B230230D
-----BEGIN PGP MESSAGE-----
Version: GnuPG v1.4.11 (Darwin)

hQIMA+Cu7Ed7iNErAQ/8CTkEOOGVub1wEt4+5qnB9gNbVF7TNjWMjw/znKAjFg1j
f0s5xuUoPamvtLXKbs0J6OdpwTZfOkK/MIXxjsz1P4cC01CmoSsdzIkhbqccX7GP
VWRM9P0TxI9005JaxMh9rsoxVP2k/RtK3z2f3didl2SMS45TfhV8MJss5HqeQlVC
KHiCWfbHB7ww68ZIVs/AAx0zVPVld1BwHJcRvFIohBu9GUTrDMYxpOsKNZDVWXb0
154KrNFgnjgueGmh25HYdfJ+gs0Fclsq5XATo2H7gfGnq+DALeWy20ig4o9VOAcj
/KU2HRA/XD13MHRZiyJVTszF1VfvsdANnemI75O+f7z34+P0lQiCCV/Z7xqrd384
9V7Uby8n+9PppD+mpt8wiCjQUfAXmHBptoNw8OwuWUGnw7svCu7wqzgjBTyAxvwL
325/o9O2TTYZvOlpoxGayG3JbKzpHlQDv7RKIwC8W1nr/0q96Hxh+RpZfk0zwGyP
wZOx27AyhLAOJtq6Tfg/ef+Ln6d5BaDWmvF9sC/wKXnjN60X6DSLlMDDIYO01whe
JroyE+R1KMYB7r5y7VUGCoyPcrJj3yQTkYVWuvHSsy3sn7N+iWd/29V/ipFeT5Tb
SKRV/Dj/ypJn07jnsLb2ixqr+UTaARP8el7UTJtYCzxs14xdw4uRvkezKZR08C/S
QQFpMeFcVmxGCQVr5llp24bDjtiIT06VbXqZBiQ+kX9JHUDwYEs1qi+seNAlCG4C
4INLNud/n85iPWrSropiYPPY
=SGgD
-----END PGP MESSAGE-----

Dans les deux cas, le message est déchiffré en utilisant:

$ cat encrypted_message | gpg
gpg: CAST5 encrypted data
Enter passphrase: asdf
gpg: encrypted with 1 passphrase
hello
35
David Wolever