如何在外壳中加密字符串?


20

我可以在命令提示符下使用公共密钥对消息(字符串)进行加密吗?另外,之后如何解密结果?

Answers:


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

+1对于openssl,因为它比gpg更为常见安装
Doug Harris,

这是完美的-在Mac,Alpine或其他任何设备上都能正常工作!
杰里米·伊格哈特

是的,不使用文件而是使用参数的示例如何?
亚历山大·米尔斯

11

如果已gpg安装,这是一种工业强度的加密方法。

gpg --encrypt -r receive@example.com> tempfile

在控制台上输入数据,然后按Ctrl+D结束文本。这将为您提供中的加密数据tempfile。解密:

gpg --decrypt <临时文件

您将需要密码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

人穴(1)

注意:

crypt实现了一台按照德国《谜》的设计设计的单转子机器,但带有256个元素的转子。攻击此类机器的方法已广为人知,因此crypt提供最小的安全性。

但这可以用于演示目的。


“ Oracle Solaris 10 8/11信息库”
Sebas,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.