$ echo "helloworld" > text.txt
$ cat text.txt
helloworld
$ gpg --cipher-algo AES256 --symmetric --armor text.txt
gpg: gpg-agent is not available in this session
$ ls
text.txt text.txt.asc
$ cat text.txt.asc
-----BEGIN PGP MESSAGE-----
Version: GnuPG v1
jA0ECQMCnGyzh+mRmpBg0kgBfcqLbdAhLc+xwZDta3/kudi/f6MmjXUzFUbNFr3H
IoXgqzjRqbeNESHd+nFSTxHQc8tXF80vXMdDzTy3HmD6ZWk3BvVx5Vo=
=EviP
-----END PGP MESSAGE-----
那么,我怎样才能避免添加GPG?我只想要加密的字节。
由于AES256是对称的,我想做这样的事情:
1. Apply AES with keyA to "file_original.txt" and produce "file_keyA.txt"
2. Apply AES with keyB to "file_keyA.txt" and get "file_keyA_keyB.txt"
3. Apply AES with keyA to "file_keyA_keyB.txt" and get "file_keyB.txt"
4. Apply AES with keyB to "file_keyB" and get "file_original.txt"
所以,如果我是A,并希望发送"某些文字"给我的朋友B:
如果我在不知道我的keyA的情况下使用带有AES的gpg和我的朋友的另一个软件或其他对称算法应该是可能的。但只有在gpg(或他的软件)没有向加密文件添加内容的情况下才有可能。我想只应用算法AES,所以我可以使用相同的密钥加密多次并获得原始。
答案 0 :(得分:2)
可能你想用openssl而不是gnupg。例如:
openssl enc -aes128 -salt -in yyy -out yyy.enc
有关联机帮助页的更多信息:https://www.openssl.org/docs/man1.0.2/apps/enc.html
答案 1 :(得分:1)
如果您希望使用gpg向您的朋友发送加密邮件,而不共享用于解密邮件的密码,那么您可能希望使用非对称加密。为此,您和您的朋友将需要使用
生成PGP密钥gpg --gen-key
然后交换你的公钥
gpg -a --export "mykey" > mykey.pub
<trade mykey.pub files>
gpg --import theirkey.pub
然后准备要传输的消息
gpg -e -a -u "my key" -r "their key" --sign -o somefile.txt.gpg somefile.txt
在你的朋友收到消息之后,他们需要用
解密它gpg -d -o somefile.txt somefile.txt.gpg
他们得到了消息。 GnuPG将生成一个强密钥,使用该密钥加密消息,然后使用您朋友的密钥加密该密钥并将其附加到该文件。它还会使用您的私钥对文件进行签名,这样您的朋友就可以(合理地)确保它在传输过程中没有被篡改。在此示例中,您可以使用
gpg --list-keys <or gpg -k>
找到他们的关键句柄(它是“rsa4096 /”之后和创建日期之前的位)在-r“他们的关键”部分的引号中使用,并且
gpg --list-secret-keys <or gpg -K>
找到你的密钥的句柄,在-u“my key”部分中使用。
如果您真的希望使用对称加密并与朋友分享密码,那么我也建议使用openssl,就像@pchris建议的那样。