Bagaimana saya bisa mengenkripsi string dalam shell?

18

Bisakah saya mengenkripsi pesan (string) menggunakan kunci publik di command prompt? Juga, bagaimana saya bisa mendekripsi hasilnya setelah itu?

Der Hochstapler
sumber

Jawaban:

27

Pilihan lain adalah 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
laalto
sumber
+1 untuk openssl karena lebih umum dipasang daripada gpg adalah
Doug Harris
Ini sempurna - berfungsi di Mac, Alpine, apa pun ... kerja bagus!
Jeremy Iglehart
ya bagaimana dengan contoh yang tidak menggunakan file tetapi argumen?
Alexander Mills
10

Jika Anda telah gpgmenginstal, ini adalah metode enkripsi kekuatan industri.

gpg --encrypt -r [email protected]> tempfile

Ketikkan data di konsol dan tekan Ctrl+Duntuk mengakhiri teks. Ini akan memberi Anda data terenkripsi di tempfile. Untuk mendekripsi:

gpg --decrypt <tempfile

Anda akan membutuhkan frasa sandi untuk [email protected]mendekripsi pesan.

Greg Hewgill
sumber
ok, jadi jika frasa sandi perlu dimasukkan secara interaktif, bagaimana melakukannya secara non-interaktif? Bagaimana ini non-interaktif?
Alexander Mills
gpg --encrypt -r [email protected] >tempfile gpg: error retrieving '[email protected]' via WKD: No data gpg: [email protected]: skipped: No data gpg: [stdin]: encryption failed: No data (Saya menggunakan mac)
Alexander Mills
4

man crypt (1)

catatan:

crypt mengimplementasikan mesin satu rotor yang dirancang sepanjang garis Enigma Jerman, tetapi dengan rotor 256 elemen. Metode serangan pada mesin seperti ini sudah banyak diketahui, sehingga crypt memberikan keamanan minimal.

Tapi tidak apa-apa untuk tujuan demonstrasi.

Nifle
sumber
"Oracle Solaris 10 8/11 Information Library"
Sebas
4
  1. Menghasilkan pasangan kunci pribadi / publik

    $ openssl genrsa -out rsa_key.pri 2048; openssl rsa -in rsa_key.pri -out rsa_key.pub -outform PEM -pubout
    
  2. Enkripsi string menggunakan kunci publik, dan simpan dalam file

    $ echo "stockexchange.com" | openssl rsautl -encrypt -inkey rsa_key.pub -pubin -out secret.dat
    
  3. Batalkan enkripsi menggunakan kunci pribadi

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