Come posso crittografare una stringa nella shell?


20

Posso crittografare un messaggio (stringa) usando una chiave pubblica al prompt dei comandi? Inoltre, come posso decifrare il risultato in seguito?

Risposte:


28

Un'altra opzione è openssl:

# generate a 2048-bit RSA key and store it in key.txt
openssl genrsa -out key.txt 2048

# encrypt "hello world" using the RSA key in key.txt
echo "hello world" | openssl rsautl -inkey key.txt -encrypt >output.bin

# decrypt the message and output to stdout
openssl rsautl -inkey key.txt -decrypt <output.bin

+1 per openssl poiché è più comunemente installato di quanto sia gpg
— Doug Harris,

Questo è perfetto - funziona su Mac, Alpine, qualsiasi cosa ... buon lavoro!
— Jeremy Iglehart,

sì, che ne dici di un esempio che non utilizza un file ma un argomento?
— Alexander Mills,

11

Se hai gpginstallato, questo è un metodo di crittografia di livello industriale.

gpg --encrypt -r recipient@example.com> tempfile

Digitare i dati sulla console e premere Ctrl+Dper terminare il testo. Questo ti darà dati criptati tempfile. Per decifrare:

gpg --decrypt <tempfile

Sarà necessaria la passphrase per recipient@example.comdecrittografare il messaggio.


ok, quindi se la passphrase deve essere inserita in modo interattivo, come farlo in modo non interattivo? Come si fa in modo non interattivo?
— Alexander Mills,

gpg --encrypt -r recipient@example.com >tempfile gpg: error retrieving 'recipient@example.com' via WKD: No data gpg: recipient@example.com: skipped: No data gpg: [stdin]: encryption failed: No data (Sono su un mac)
— Alexander Mills

5
  1. Genera una coppia di chiavi privata / pubblica

    $ openssl genrsa -out rsa_key.pri 2048; openssl rsa -in rsa_key.pri -out rsa_key.pub -outform PEM -pubout
    
  2. Crittografare la stringa utilizzando la chiave pubblica e archiviarla in un file

    $ echo "stockexchange.com" | openssl rsautl -encrypt -inkey rsa_key.pub -pubin -out secret.dat
    
  3. Annulla la crittografia utilizzando la chiave privata

    $ string=`openssl rsautl -decrypt -inkey rsa_key.pri -in secret.dat `; echo $string
    stockexchange.com
    

4

man crypt (1)

Nota:

cripta implementa una macchina a un rotore progettata secondo le linee dell'enigma tedesco, ma con un rotore a 256 elementi. I metodi di attacco su tali macchine sono ampiamente noti, quindi crypt offre una sicurezza minima.

Ma va bene per scopi dimostrativi.


"Oracle Solaris 10 8/11 Information Library"
— Sebas,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.