![仅为一个进程解密文件的程序](https://linux22.com/image/5840/%E4%BB%85%E4%B8%BA%E4%B8%80%E4%B8%AA%E8%BF%9B%E7%A8%8B%E8%A7%A3%E5%AF%86%E6%96%87%E4%BB%B6%E7%9A%84%E7%A8%8B%E5%BA%8F.png)
我正在寻找一种程序来动态加密和解密文件(如果目录更好)并且仅通过 cli 进行一个进程。在我看来,它必须像 sudo 一样工作:如果你运行cat $crypted_file
(也在超级用户模式下),你只能看到加密的字节;如果你运行program cat $crypted_file
你可以读取文件。顶部将加密整个文件夹(或分区),只能使用program bash
命令读取。存在这样的东西吗?
答案1
解决gpg
方案是将文件解密到标准输出,并将其通过管道传输到您的程序。这需要程序读取stdin
,但情况可能并非如此。我在我的系统上为此创建了一个别名:
$ gpg -q --output -
$ alias gpgcat='gpg -q --output -'
然后...
$ gpgcat encryptedfile.gpg | ./myprogram
根据 user236012 的评论,您可以编写以下 OpenSSL 替代方案:
$ echo "Hello, World!" > secrets.txt
$ openssl aes-256-cbc -a -salt -in secrets.txt -out secrets.txt.enc
$ openssl aes-256-cbc -d -a -in secrets.txt.enc
Hello, World!
您可能还需要最后一个别名,因为您对解密感兴趣:
$ alias opensslcat='openssl aes-256-cbc -d -a -in'
(请注意,这定义了您可能不想使用的密码和盐选项)
还要记住,许多程序接受-
代表标准输入的文件参数。例如:
$ gpgcat MyBigSecret.gpg | gzip - > NoMoreSecret.gz
在这里,gzip
获取了该文件的未加密版本,您可以通过解压来读取结果:gzip -dc NoMoreSecret.gz
。