标签: pgp

如何在Python中的AWS Lambda函数中正确解密PGP加密文件?

我正在尝试用 python 创建一个 AWS Lambda:

  1. 从 S3 存储桶下载压缩和加密的文件
  2. 使用解密文件python-gnupg
  3. 将解密的压缩内容存储在另一个S3存储桶中

python-gnupg这是在 Lambda 层中使用 python 3.8 和包。

我已验证 PGP 密钥是否正确,它是否已正确加载到密钥环中,并且加密文件是否已正确下载。但是,当我尝试运行时,gnupg.decrypt_file我得到的输出看起来好像已经成功,但解密状态显示not ok并且解密的文件不存在。

如何在 Lambda 中进行 PGP 解密?

以下是从 lambda 函数中提取的相关代码:

import gnupg
from pathlib import Path

# ...

gpg = gnupg.GPG(gnupghome='/tmp')

# ...

encrypted_path = '/tmp/encrypted.zip'
decrypted_path = '/tmp/decrypted.zip'

# ...

# this works as expected
status = gpg.import_keys(MY_KEY_DATA)

# ...

print('Performing Decryption of', encrypted_path)
print(encrypted_path, "exists :", Path(encrypted_path).exists())

with open(encrypted_path, 'rb') as f:
    status = …
Run Code Online (Sandbox Code Playgroud)

gnupg pgp python-3.x aws-lambda python-gnupgp

2
推荐指数
1
解决办法
3105
查看次数

如何替换Linq Cast表达式?

问题:我从这里获得了一些pgp加密代码:http: //blogs.microsoft.co.il/blogs/kim/archive/2009/01/23/pgp-zip-encrypted-files-with-c.aspx

它有以下方法,使用一些LINQ.我仍然在使用.NET 2.0并且无法切换到更高版本,但......

如何用普通代码替换此表达式?我真的不懂Linq,我猜它会做一些排序吗?

 private PgpSecretKey GetFirstSecretKey(PgpSecretKeyRingBundle secretKeyRingBundle)
        {
            foreach (PgpSecretKeyRing kRing in secretKeyRingBundle.GetKeyRings())
            {
                PgpSecretKey key = kRing.GetSecretKeys()
                    .Cast<PgpSecretKey>()
                    .Where(k => k.IsSigningKey)
                    .FirstOrDefault();
                if (key != null)
                    return key;
            }
            return null;
        }
Run Code Online (Sandbox Code Playgroud)

.net c# linq pgp openpgp

1
推荐指数
1
解决办法
284
查看次数

将PGP公钥转换为RSA公钥XML格式

我遇到了将PGP公钥转换为RSA公钥格式的问题.遵循PGP格式的公钥,需要转换为XML格式.

如果有人遇到过这种情况,请帮助我.

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.1 (MingW32)

mQELBE2kxxwBCADjWSW/F/h9VkV9JizFwKXPzg1YlXyEmN/dGKTVBidOI3ZcrhQd
v3qhcWtNmBXz1BpO+YLy41AfJzysKNHrs23sMh8nKWlMSmKZZqVpimXCcCrKQ8Hi
uNNxcRN/hBdy5R4MN/N62hbFTgoZpGmrQjOXDSPozDeckQE7DjkGYvQAT63dT3jC
F99im/KC2GfHDxVh70+881ot+vUxKC6GRZAz6wth90M/5FzbKQt0GmFrq/XapqxK
ZQI5LLMzahdGzJTGEbfs8SlH6OAqZsgjgEKYaW3EooQVbrvGrdqna6PBkLbroCOl
EH/h6W9h42dFLb2OSV9OES7oidQATqzNC+oXAAYptE9CdWNrIENvbnN1bHRhbnRz
IC0gTXkgTWVkaWNhcmUgQWR2b2NhdGUgKE1NQSkgPHByb2RzdXBwb3J0QGJ1Y2tj
b25zdWx0YW50cy5jb20+iQE0BBMBAgAeBQJNpMccAhsDBgsJCAcDAgMVAgMDFgIB
Ah4BAheAAAoJEJrpFtACLTdGtKEH/3G4pB4UeiEsMwDYDO1YF4jkz2lqbItmCGek
WuVg7G1LGHgZm2cJVH0xSuTKY4WpaX1RX5iWhVgz0dSrDNkjOi3hlZJ49VzXZi8T
abQ+Uiqfu7QIWvSOmjhxdrl8FuC2ZpZLRWB93VFNGKM1qYrjphTW1uMCnU4WtkD0
e8d9M3VCC/uL72a0+0R2El80W55yZxvHD6JHlp82Gdn+sqsAEnUcg5c+USLcehgc
v931SE4VfcxW4PELcOp0gKb00Q4bWp09Is/NVR+kVUax5EaT2Wo5oe7cx8OgrzMs
5daypwibGoFCloFE4LH59hbahoM5s8Ya59YAYEBWA1u68DCBYqS5AQsETaTH1gEI
AMCvsxsZcm5kIdbXATuPJQ1PKDejeeF0t4f27vDqR9SOZKas2ExpWbmjSeF9EdJ5
e1QKm88/WSXeUuE4Sn2xBfZXfRvhWndQIs6pOi8licuht1WiuYWBlvPefMO1e15G
fHrghhQ4RcTLIG8SWDcVFbsnr92RDy8NV7qZd/N08dZ+IS7z2JV8hp8Ts0a9T01q
p1h6lCbr9CAABQmlihMQ+hM4LO9DjqDeR85I1NWNpODeoks8zx86S9xOlEBxmWg2
G90ahBxm3IsYW9KtDd+oro6s6GQroo+5C0bcHyVL6Dylmhkn4CYQ99WAzMtw3gQ8
IDFrLO7Vw1kMc+vR4LGMPpkABimJAR8EGAECAAkFAk2kx9YCGwwACgkQmukW0AIt
N0ZBxggAqLFdkvVHgsK8wx6WyZalRpimirVQxStPT8WWlGyg8zJIGxbAzC6f4Fml
IuXGQYse+D8LfL7leWCyGu71+IZb22XCQ7ZO2ogWl6txUO5jWgPkoPBi0XMK/tLu
pT1WP8/lzrh1XQgwvLME+dcTMeuqgV5uDUmhn2OX9j8N3iyZeOV84cFrYmgrNfHn
lHlGx2kyXhgUwfK6noIUljprImIjlntGL0sh6lxTiu5bWMpXJVeJdRjNXuf4G+2/
mLU7BfsNP5jDr3+isTTLcOlZR0PHiAywIFPA2VOMTscB6nNEHiu8FLNFnY+QgboT
uC4E2095FYSXRMXc/rif7+d5+NApAg==
=+Q6Q
-----END PGP PUBLIC KEY BLOCK-----
Run Code Online (Sandbox Code Playgroud)

这需要转换为RSAKeyValue XML格式,如下所示.

<RSAKeyValue>
    <Modulus>151Vw6Kq51bpblahblahblahWCkPmD345ncclzFrmeb9fjpE+B6VsIAqP3kahu00p33BmFpDpXOcgi uRC2En0HoGqyZB9ifvNlPhT7flZ1uVuC9JtywG3FmYRsqbpJuT7VTIAHYExU6T/FyRuyIbhdUVwhue7ARaObsEWszE1IoM7+XcYYs=</Modulus>
    <Exponent>AQAB</Exponent>
    <P>+7OU6YErvfk84O/2bX5s2753xE+pdiyJl3j8gy4zMh4UKeKVhyxgSJJCvNTl9XVIya6xnCWPkHVy8ylNqyLiHQ==</P>
    <Q>20v7/nODe/jKcbsiYEwzGXp0ZyiG17JqzOBKrDFu6bwPiAEHzZln0CYfUn0E hJdCmetaq9WFXk27mbK3Z6aBxw==</Q>
    <DP>RpoN6B26dlRGFlZZCkePI2he0esCfsppYdqnAejgpWs4 frM2/C6fZ1vXan5RbrOSUjg1S7ZhecToFHr+dUWYpQ== </DP>
    <DQ>ayaHbF7YwfxgPo3nUBIrbamNstH0gPQmhxCYq+ZDgWV oWVXXkDgCp4vZBh8b1AVsf3SmCwv7bIaiwYi3YKfVBQ==</DQ
    <InverseQ>YjvieMYPEDdUHqSZRWAsFlEESd3NczFCrbBaS HzbsbOZeDrccvUfoOP2jeIhuMt0qQwMqXY/NJau9Ldwdx7xNw==</InverseQ>
    <D>wEg6bM5LVSWoQgWpoldz5dQWfQjqQVc8WzKpDA HQ8ejsm0ug4ZwRcRRnKZs3o7OTsiAJCfjqT9ij1gKMoeLrXIM1 RDOcAYBxI0qwWdRrr3sbar7ntMYmy4tlTTf8/G+ypw+CJi1gz2umswcx4MHhNTUGTUHSmjEjDTFfh3sW64k= </D>
</RSAKeyValue>
Run Code Online (Sandbox Code Playgroud)

.net c# rsa pgp

1
推荐指数
1
解决办法
3555
查看次数

值得信赖的 GPG 证书

我有一个关于 GPG 证书和证书颁发机构的小问题。

我正在使用 GnuPG 对我在服务器上托管的 tarball 进行签名。我希望想要下载此 tarball 的用户能够使用我的公钥对其进行加密。目前,我将我的公钥存储在我拥有的另一台服务器上。这有两个问题:

  • 密钥不“可信”,用户会收到警告
  • 同样的想法,由于密钥不可信,如果密钥被恶意更改,用户将看不到任何内容

我过去读过一些有关密码学解决方案的内容,并且知道一点 X.509 CA 的工作原理,但我不太了解 PGP 密钥的工作原理。我尝试在 GPG 中使用我的 SSL(受信任)证书,但总是失败(也许有一个选项我还没有找到?)。如果无法使用我的 SSL 证书,如何将我的 PGP 证书“注册”到 CA?

谢谢!

最好的,
蒂博。

ssl ca gnupg pgp

1
推荐指数
1
解决办法
2710
查看次数

在哪里存储公共和私人gpg密钥?

我有一个WebApplication,使用GWT + Tomcat + Jersey + Postgres.所有重要数据都使用gpg公钥在Postgres上加密,并使用gpg私钥解密.

我的问题是:在哪里存储这些密钥?我把它存放在本地磁盘上听起来很不安全,但我不知道在哪里.

有人可以帮忙吗?提前致谢.

postgresql gnupg pgp

1
推荐指数
1
解决办法
2635
查看次数

什么是 PGP 密钥?

我正在开发一个 C# 应用程序,它使用由 Bouncy Castle (BC) 库实现的 PGP 加密/解密消息。我知道 PKI,但 PGP 中的密钥让我有点失望。我查看了 BC 示例/源代码和 PGP RFC,但提出了更多问题。

是 Secretkey == Session 密钥吗?

Secretkey == 对称密钥吗?

Secretkey == 私钥(pub/priv 密钥对)吗?至少以下内容似乎表明密钥是私钥。

internal static PgpPrivateKey FindSecretKey(PgpSecretKeyRingBundle pgpSec, long keyID, char[] pass)
Run Code Online (Sandbox Code Playgroud)

RFC 说密钥包含有关公钥的信息,或者可能是公钥本身(至少这是我的阅读)。

另外,我在某处读到的 Secretkey 基本上是一个密码加密的私钥。

何时/为什么我需要 PGP 协议中的密钥?签名还是加密?

谢谢

encryption cryptography bouncycastle pgp secret-key

1
推荐指数
1
解决办法
9706
查看次数

将 .asc 转换回 .gpg

我通常不会问,但我无法在 SO 或 google 上找到答案。

我正在使用一个接受字符串格式的 base64 编码 pgp 公钥的库。但是,我需要转换的组件之一具有 .asc 格式的密钥。如何将其转换回 binary-pgp 或 base64-gp。

对不起,如果这真的是愚蠢的问题,我是 pgp 工具集的新手。

非常感谢!

沙恩

encryption gnupg pgp

1
推荐指数
2
解决办法
5036
查看次数

C的PGP库

我正在用C开发客户端服务器通信应用程序.我想在之间使用一些公钥加密来加密消息.我发现PGP(相当不错的隐私)是一个很好的政策.那么有没有可用于在我的应用程序中嵌入PGP的库.我需要密钥生成,文本消息加密(最大1024字节长度的文本),消息解密.

提前致谢

c pgp public-key-encryption

0
推荐指数
1
解决办法
4409
查看次数

确定文件是否在Java中加密或不加密

我有一些加密格式的文件(PGP加密)和一些原始格式的文件.有什么方法可以确定我的文件是PGP加密还是原始文件,以便我可以调用适当的方法在Java中读取它?

java pgp

0
推荐指数
1
解决办法
219
查看次数

如何将使用“\r\n”作为换行符的字符串转换为pandas数据帧

我有一个字符串,bytearray(b'onefish,twofish,greenfish,bluefish\r\n1,2,3,4')我使用该pgpy库从加密的 csv 文件中获取该字符串。

我需要我的数据框看起来像这样。

      onefish twofish greenfish bluefish
0     1       2       3         4
Run Code Online (Sandbox Code Playgroud)

到目前为止,我使用多个for循环来创建列表,然后将其放入字典中。

如何使用以下方法来实现此目的: df = pd.Dataframe(bytearray(b'onefish,twofish,greenfish,bluefish\r\n1,2,3,4')获得上面我想要的输出?

python pgp pandas

0
推荐指数
1
解决办法
4541
查看次数