コマンドプロンプトで公開キーを使用してメッセージ(文字列)を暗号化できますか?また、後で結果を復号化するにはどうすればよいですか?
別のオプションは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 [email protected]> tempfile
コンソールでデータを入力し、 Ctrl+D テキストを終了します。これにより、tempfile
の暗号化されたデータが得られます。復号化するには:
gpg --decrypt <tempfile
メッセージを復号化するには、[email protected]
のパスフレーズが必要です。
秘密鍵と公開鍵のペアを生成する
$ 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
注:
cryptは、ドイツのエニグマのラインに沿って設計された1ローターマシンを実装していますが、256要素のローターを備えています。このようなマシンに対する攻撃の方法は広く知られているため、cryptは最小限のセキュリティしか提供しません。
ただし、デモンストレーションの目的では問題ありません。