有没有办法判断通过 GNU Privacy Guard 加密的内容是对称的还是非对称的(无需解密或已经知道开始)?如何?
无论如何(对于那些想知道我在做什么的人),我使用 Python 3.x 编写了一个基于 GUI 的 IDE,可以打开对称加密的文件(也可以保存它们)。它可以打开非对称加密的文件(输入密码以使用您的密钥而不是密码来解密对称加密的文件)。但是,它不知道它们是不对称的,并且如果保存,则会用对称加密的文件覆盖它们。如果能够以不对称的方式保存它们,那就太好了。我的编辑器使用gpgLinux 上的命令行程序(没有gpg库或类似的东西)。
我可以在非对称加密的密码提示上有一个复选框,但我不想这样做,所以它必须是用户手动操作的。
对于我自己的个人文件,我可以在保存的文件中添加某种标记来区分,但我希望它能够正确打开它们,即使它们不是在我的 IDE 中创建的。
我知道有一个标题相似的问题,但正文中提出的问题根本不同。
我在 Ububtu 16.04 64 位上使用 gpg (GnuPG) 2.1.15。只gpg --gen-key询问我的姓名和电子邮件 ID,没有其他任何要求。我希望它询问密钥大小、算法、到期日期等。我如何更改行为?
我正在开发一个自动化流程,在某些特定步骤中需要检测文件何时“登陆”或在特定 GCS 存储桶中创建。然后使用公钥对其进行加密,生成一个扩展名为“.gpg”的文件并将其存储在另一个文件夹或存储桶中,因此链中的下一步将查找这些加密文件并对其执行其他操作。
也许我只是把这个问题复杂化了,但我曾想过使用Cloud Storage 的Pub/sub 通知并激活将运行 gpg 命令的 Cloud Build 触发器,如下所示:
gpg --import a_public_key.pub.asc
gpg --encrypt-files -r some@email.com gs://some_bucket/somefodler/some_file_here.gz
Run Code Online (Sandbox Code Playgroud)
我觉得必须存在一种更直接的方法来做到这一点。顺便说一句,我试图避免(如果可能的话)任何需要先下载对象、加密它们然后将它们上传回来的替代方案。每个文件大小约为 5 GB。
我非常感谢您提供的任何帮助。
我注意到您可以指定您希望在特定存储桶中使用的“加密类型”: https: //cloud.google.com/storage/docs/encryption。但是,它看起来不像我需要的。据我了解,这样做的作用是在对象“生存”在存储桶中时对它们进行加密。但一旦下载或传输,GCP 就会解密它们。(可能是我理解错了,不过我是这么理解的,如有错误请指正)
encryption gnupg google-cloud-storage google-cloud-platform google-cloud-build
这个的后续。
我得到了阅读/解码工作
1> {ok, F} = file:read_file("inaimathi.rsapub").
{ok,<<"-----BEGIN RSA PUBLIC KEY-----\nmQINBE9NBIQBEADMSzN6b0FaPP0rGiLDWKfH4ehN66Z0SAIynXm6lBHjmO69pNsm\niIe4p1X9aXhr"...>>}
2> [Entry] = public_key:pem_decode(F).
[{'RSAPublicKey',<<153,2,13,4,79,77,4,132,1,16,0,204,75,
51,122,111,65,90,60,253,43,26,34,195,
88,167,...>>,
not_encrypted}]
Run Code Online (Sandbox Code Playgroud)
根据文档,为了从中获取可用的公钥,我必须做的最后一件事就是在其public_key:pem_entry_decode/1上运行Entry。但是,当我尝试这样做时,会出现错误。
3> public_key:pem_entry_decode(Entry).
** exception error: no match of right hand side value
{error,
{asn1,
{{badmatch,{error,{asn1,{wrong_tag,{131097,16}}}}},
[{'OTP-PUB-KEY',dec_RSAPublicKey,2,
[{file,"OTP-PUB-KEY.erl"},{line,5956}]},
{'OTP-PUB-KEY',decode,2,
[{file,"OTP-PUB-KEY.erl"},{line,493}]},
{public_key,der_decode,2,
[{file,"public_key.erl"},{line,166}]},
{erl_eval,do_apply,6,
[{file,"erl_eval.erl"},{line,576}]},
{shell,exprs,7,[{file,"shell.erl"},{line,668}]},
{shell,eval_exprs,7,
[{file,"shell.erl"},{line,623}]},
{shell,eval_loop,3,
[{file,"shell.erl"},{line,608}]}]}}}
in function public_key:der_decode/2 (public_key.erl, line 170)
Run Code Online (Sandbox Code Playgroud)
我在这里做错了什么?
编辑:不认为这很重要,但有人问,所以。
我在酷睿i3运行Debian喘息从的〜2日龄结账安装二郎此。
erl --version 说
Erlang R15B02 (erts-5.9.2) [source] [64-bit] [smp:4:4] [async-threads:0] [hipe] [kernel-poll:false]
Run Code Online (Sandbox Code Playgroud) 所以我有这个bash脚本来加密:
#!/bin/bash
#encrypt.sh
fn=$1
if [ $# -eq 0 ]
then
echo "Filename required..."
fi
echo "Type text. Hit Ctrl-d when done"
keyvariable=$(cat)
echo -e $keyvariable | gpg --symmetric --cipher-algo AES256 > $fn
Run Code Online (Sandbox Code Playgroud)
我有这个脚本来做解密:
#!/bin/bash
#decrypt.sh
fn=$1
if [ $# -eq 0 ]
then
echo "Filename required..."
fi
cat $fn | gpg --decrypt
Run Code Online (Sandbox Code Playgroud)
例:
sh encrypt.sh test
Type text. Hit Ctrl-d when done
hello
how
are
you
?
Run Code Online (Sandbox Code Playgroud)
我输入密码并确认.太好了.我现在有一个名为"test"的加密文件.
但当我去解密"测试"时,这是输出:
sh decrypt test
gpg: AES256 encrypted data
gpg: encrypted with …Run Code Online (Sandbox Code Playgroud)