Чи можу я зашифрувати повідомлення (рядок) за допомогою відкритого ключа в командному рядку? Крім того, як потім можна розшифрувати результат?
Чи можу я зашифрувати повідомлення (рядок) за допомогою відкритого ключа в командному рядку? Крім того, як потім можна розшифрувати результат?
Відповіді:
Ще один варіант 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
Якщо ви gpg
встановили, це метод шифрування промислової міцності.
gpg --encrypt -r отримувач@example.com> tempfile
Наберіть дані на консолі та натисніть, Ctrl+Dщоб закінчити текст. Це дасть вам зашифровані дані в tempfile
. Для розшифрування:
gpg --decrypt <tempfile
Вам буде потрібна парольна фраза для recipient@example.com
розшифрування повідомлення.
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
(Я на mac)
Створіть пара приватних / відкритих ключів
$ openssl genrsa -out rsa_key.pri 2048; openssl rsa -in rsa_key.pri -out rsa_key.pub -outform PEM -pubout
Зашифруйте рядок за допомогою відкритого ключа та збережіть у файлі
$ echo "stockexchange.com" | openssl rsautl -encrypt -inkey rsa_key.pub -pubin -out secret.dat
Скасувати шифрування за допомогою приватного ключа
$ string=`openssl rsautl -decrypt -inkey rsa_key.pri -in secret.dat `; echo $string
stockexchange.com
Примітка:
крипта реалізує однороторну машину, розроблену за лініями німецької Enigma, але з ротором на 256 елементів. Методи нападу на такі машини широко відомі, тому крипта забезпечує мінімальну безпеку.
Але це добре для демонстраційних цілей.