シェルで文字列を暗号化するにはどうすればよいですか?


20

コマンドプロンプトで公開キーを使用してメッセージ(文字列)を暗号化できますか?また、結果を後で解読するにはどうすればよいですか?

回答:


28

別のオプションは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があるよりも、それはより一般的にインストールされていますので、opensslのための1
ダグ・ハリス

これは完璧です-Mac、Alpine、何でも動作します...良い仕事です!
ジェレミーイグレハート

ファイルではなく引数を使用する例はどうですか?
アレクサンダーミルズ

11

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を使用しています)
アレクサンダーミルズ

5
  1. 秘密/公開キーのペアを生成する

    $ openssl genrsa -out rsa_key.pri 2048; openssl rsa -in rsa_key.pri -out rsa_key.pub -outform PEM -pubout
    
  2. 公開鍵を使用して文字列を暗号化し、ファイルに保存します

    $ echo "stockexchange.com" | openssl rsautl -encrypt -inkey rsa_key.pub -pubin -out secret.dat
    
  3. 秘密鍵を使用した暗号化解除

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

4

man crypt(1)

注意:

cryptは、ドイツのエニグマのラインに沿って設計された1ローターマシンを実装しますが、256要素のローターを備えています。そのようなマシンに対する攻撃の方法は広く知られているため、cryptは最小限のセキュリティを提供します。

しかし、デモンストレーションの目的には問題ありません。


「Oracle Solaris 10 8/11情報ライブラリ」
セバス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.