问题标签 [openpgp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2349 浏览

pgp - 是否将 GnuPG 子密钥而不是主密钥发送到密钥服务器?

好的,所以我已经使用 GnuPG 生成了我的 PGP 密钥并将密钥发送到密钥服务器。
但后来我发现 GnuPG 生成了一对密钥,一个主密钥和一个子密钥,据我所知。
使用主密钥的 id(一些字母/数字)将主密钥上传到密钥服务器是否出错?我对子键的作用以及如何使用它们有点迷茫。

谢谢

0 投票
1 回答
2905 浏览

c# - BouncyCastle C# PublicKey 不同于 GnuPG

我正在尝试从 GnuPG 使用 BouncyCastle C# 库创建的密钥环中获取公共 PGP 密钥。我已经通过使用以下代码使其半工作。问题是它输出的公钥大约是真实公钥长度的一半,最后几个字节也不同。我只是想得到真正的钥匙。

更新:有趣的是,我生成的密钥环只有一个公钥,但我从 bouncycastle 中得到了两个。我还发现,如果将第二个键插入到末尾的前几个字符中,它几乎会产生原始键。最后只有几个字符不同。那么为什么有两个键,为什么会发生这种情况呢?我错过了什么?

GnuPG 密钥环不兼容吗?

另请注意,此处显示的代码仅获取最后一个键。我现在将每个添加到列表中。

这是我的代码:

这是实际的公钥:

这是由 BouncyCastle 制作的 NEW KEY(抱歉无法格式化):

mQENBFP2z94BCADKfQT9DGHm4y/VEAYGL7XiUavbv+aE7D2OZ2jCbwnx7BYzQBu863v5qYe7oH0oBOiw67VaQSjS58fSBAE8vlTkKjvRAscHJNUX9qZrQoRtpMSnrK7NCa9N2ptvof7ykF1TAgbxDSSnhwysVznYc7mx76BO6Qx8KChqEd0Yp3w2U89YkUqNqdzjB7ZIhj5hDM9f4eyHwsz0uZgyqLKK5VgNj6dHVmOHZt6+RIydRC2lGfocWKM8loPkk6GiSX9sdEm6GXxi7gV/Q3Jr0G099AFg57cWyj1eO6NC8YHLgBHwrB1IkFwiJ0x5IHZssy/XleQ1i1izc3ntWiiH24powuAhABEBAAG0H3N5bmFwczMgPHN5bmFwczNAc2FmZS1tYWlsLm5ldD6JATkEEwECACMFAlP2z94CGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIXgAAKCRD944Hz1MHUYP+AB/4r​​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

还是不一样。将两个键都放在记事本中并搜索“tNCDnS”,然后它们会发生变化。

谢谢你一直陪着我。我已经走得够远了,我不想为了一些糟糕的加密而废弃整个代码。

0 投票
2 回答
3446 浏览

encryption - Issues with openpgp golang gpg library

So I'm pretty new to golang and i'm struggling to get a working example going of encrypting some text with openpgp and decrypting it again.

Here is what I have so far: (https://gist.github.com/93750a142d3de4e8fdd2.git)

This is based off of https://github.com/jyap808/jaeger

When I run it, it seems to partially work, but only outputs some of the characters of the original string... Changing the original string causes some very weird issues.

Clearly there is something I'm not understanding, so would appreciate any assistance given.

0 投票
1 回答
1460 浏览

c# - 如何使用 BouncyCastle 加密库(C# 版本)的 ArmoredOutputStream 创建 ascii-armored 签名的 OpenPGP 消息

当我使用 ArmoredOutputStream 时,我在明文后得到“-----BEGIN PGP MESSAGE-----”而不是“-----BEGIN PGP SIGNATURE-----”。我无法弄清楚如何自己使用 ArmoredOutputStream。有时我得到签名标头,但消息中包含非 base64 字符。BC 军团成员一定是虐待狂,他们发布了这么好的库,几乎没有文档说明如何使用它……

这是我的代码:

0 投票
1 回答
1123 浏览

angularjs - how do I use openPGP.js library with angularJS?

I'm pretty new to Angular. I'm trying to incorporate the openPGP library to my app (client side). I need some help on how to incorporate a javascript library to the Angular App. Thanks!

I'm reading through the openPGP docs https://github.com/openpgpjs/openpgpjs and the example provide in the docs is below:

I prefer not to use require to source in openPGP to my app. So I've tried var openpgp = window.openpgp; which seems to not throw any error here. However, I get TypeError: Cannot read property 'key' of undefined error.

I should mention that I have installed openpgp using bower install.

I'm still trying to figure out what I can do to refer to openPGP in the Angular app. Thanks.

0 投票
1 回答
695 浏览

c# - Bouncy Castle API 如何知道使用哪个密钥进行加密?

我对用于处理多个公钥以加密数据的 Bouncy Castle API 流程感到好奇。例如,如果我有 3 个不同的客户端希望我加密数据并使用他们的公钥发送给他们进行加密,如果我分别标记每个客户端的公钥 - bouncy castle 如何确定客户端 1 应该使用公钥加密1 而不是公钥 3(这将是客户端 3 的公钥)?

从解密的角度来看,publicKeyEncryptedData 似乎附有一个 keyID 标签,可用于查找相应的私钥,但我不明白它如何选择正确的密钥进行加密。

0 投票
1 回答
802 浏览

c++ - 安全的服务器-客户端握手方法

我的客户端-服务器程序使用 OpenSSL 来处理数据交换并且正在工作,但我需要确保我的客户端连接的服务器是正确的服务器而不是假服务器。

问题是我的程序生成了一个自签名证书,而客户端无法通过它进行验证。如果我嵌入了一个证书,任何人都可以提取它,制作一个虚假的客户端服务器并试图窃取信息。OpenPGP 密钥也是如此。

那么,即使服务器二进制文件对所有人都可用,我是否可以实现一些方法来验证服务器,因为它也是客户端?

0 投票
2 回答
1454 浏览

java - 如何在不访问 Java 中的物理密钥环的情况下使用公钥 OpenPGP(GPG)

设置:

  • 带有 GnuPG 的 Linux 或带有 GPG4Win(OpenPGP) 的 Windows
  • 可以访问密钥环的特权用户创建了 2048 RSA 密钥对
  • 已为 Java 应用程序创建了第二个低权限用户以在其下运行
  • 已授予此用户运行 GPG 命令的权限,但无法访问物理密钥环文件
  • Java 应用程序知道密钥 ID,提取私钥的密码短语也是如此
  • Java 应用程序已导入 Bouncycastle 库
  • java程序需要使用密钥对执行加密和解密

问题:

我已经使用 Bouncycastle 成功执行了加密和解密。但它涉及尝试从发布和保密文件中读取公钥和私钥。为了安全起见,我宁愿不让 java 应用程序直接访问密钥环文件。

我有什么选择。Bouncycastle 中是否有任何选项可以在不读取密钥环或将密钥导出到单独文件的情况下执行此操作

注意:不需要使用充气城堡。

0 投票
1 回答
1224 浏览

javascript - OpenPGP.min.js 不生成密钥对

我从昨天开始尝试让openpgp.js工作。我尝试了完整版,但没有成功,所以我现在尝试了最小版,仍然没有成功。我有以下 HTML 代码:

但在我的 Chrome 控制台中,我只得到:

为什么它是未定义的?

0 投票
1 回答
418 浏览

java - 关于 PCI-DSS 合规性 - 文件加密

我们的应用程序需要通过 FTP 接口处理来自外部系统的带有信用卡信息(假设信用卡号)的文件。这是一个平面文件(文本)。我们需要根据一些业务规则对数据进行处理,然后通过 FTP 接口将其转发到另一个外部系统。此外,我们的应用程序需要保留入站文件和出站文件的副本。

那么,为了符合 PCI-DSS 指南,使用 GnuGP 加密文件是否足够,或者我们需要单独加密数据元素(如 CC 编号)然后加密文件?

谢谢和问候, 桑