コマンドプロンプトで公開キーを使用してメッセージ(文字列)を暗号化できますか?また、結果を後で解読するにはどうすればよいですか?
コマンドプロンプトで公開キーを使用してメッセージ(文字列)を暗号化できますか?また、結果を後で解読するにはどうすればよいですか?
回答:
別のオプションは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
メッセージを復号化するにはパスフレーズが必要です。
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
注意:
cryptは、ドイツのエニグマのラインに沿って設計された1ローターマシンを実装しますが、256要素のローターを備えています。そのようなマシンに対する攻撃の方法は広く知られているため、cryptは最小限のセキュリティを提供します。
しかし、デモンストレーションの目的には問題ありません。