我想要实现类似
tar -c directory | openssl foo > encrypted_tarfile.dat
我需要 openssl 工具来使用公钥加密。
我发现了之前关于对称的问题在命令提示符下加密(原文如此!),这还不够。我确实查看了 openssl(1) 手册页,只找到了对称加密。OpenSSL 真的不支持非对称加密吗?
基本上,许多用户应该创建他们的加密 tar 文件并将其存储在一个中心位置,但只有少数人被允许读取它们。
答案1
OpenSSL 的非对称加密例程位于rsautl
子命令下。(在 OpenSSL 的最新版本中,这已被命令取代pkeyutl
,但参数似乎相同。)
使用某人的公钥加密 tar 文件:
openssl rsautl -encrypt -inkey Bob.pub -pubin -in foo.tar -out foo.tar.enc
然后他们可以使用私钥解密 tar 文件:
openssl rsautl -decrypt -inkey Bob -in foo.tar.enc -out foo.tar
请注意,SSH 和 SSL 使用不同的密钥格式,因此如果您想使用 SSH 密钥进行加密/解密,则不能直接使用 ~/.ssh/id_rsa.pub。
答案2
使用gpg——加密。
使用“-r”您可以传递用户 ID。
看
man gpg
答案3
如果您不想设置 gpg 基础结构,而只想使用公钥/私钥对加密文件,则以下工具可能会有用:https://github.com/galets/AsymmetricCrypt. 您需要 Linux 上的 Mono 才能运行它。
免责声明:这是我写的
答案4
以下列出 2 个例子man openssl
:
Send encrypted mail using triple DES:
openssl smime -encrypt -in in.txt -from [email protected] \
-to someone@somewhere -subject "Encrypted message" \
-des3 user.pem -out mail.msg
Sign and encrypt mail:
openssl smime -sign -in ml.txt -signer my.pem -text \
| openssl smime -encrypt -out mail.msg \
-from [email protected] -to someone@somewhere \
-subject "Signed and Encrypted message" -des3 user.pem
由于提到了s/mime
和 ,因此有些令人困惑des3
。但事实上,上述例子中发生了以下情况:
- 生成一个新的随机对称密钥
- 该文件使用对称密钥加密
- 对称密钥使用非对称算法加密,公钥存储在
user.pem
- 将加密的对称密钥、加密文件和元数据放入标准容器中
最终结果是in.txt
文件被加密成mail.msg
文件,因此只有拥有与公钥匹配的私钥的用户user.pem
才能解密它。