Могу ли я зашифровать сообщение (строку) с помощью открытого ключа в командной строке? Кроме того, как я могу расшифровать результат впоследствии?
4 ответа
Другой вариант - 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 recipient@example.com >tempfile
Введите данные в консоли и нажмите Ctrl+D, чтобы закончить текст. Это даст вам зашифрованные данные в tempfile
. Для расшифровки:
gpg --decrypt <tempfile
Вы будете нуждаться в ключевой фразе для recipient@example.com
, чтобы расшифровать сообщение.
нота:
В crypt реализована машина с одним ротором, разработанная по образцу немецкой Enigma, но с ротором из 256 элементов. Методы атаки на такие машины широко известны, поэтому крипта обеспечивает минимальную безопасность.
Но это нормально для демонстрационных целей.
Генерация пары секретный / открытый ключ
$ 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