问题标签 [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.
java - 为什么 Spongy Castle 忽略 bcpg 和 openpgp 包
有谁知道为什么SpongyCastle明确排除了 openpgp 和 bcpg 包(以及其他包)的构建?我想让 OpenPGP 支持工作,我需要一些这样的类来做到这一点。
您可以在pom.xml文件中找到排除项。
出于好奇,我克隆了存储库并尝试包含这些包。这似乎就像将 bzip2 目录的内容移动到 src 目录并从 POM 文件中删除 2 个排除项一样简单。结果似乎已构建,生成的 JAR 文件包含我需要的类。是否存在可能无法预料的运行时问题?
go - 如何使用 Go 的 openpgp 包?
我一直在查看Go软件包的文档openpgp
,我想我一定遗漏了一些明显的要点。例如,有一个ReadKeyRing
函数,但没有WriteKeyRing
. 另一方面,我可以Serialize
,Entity
但我无法读回它。这里发生了什么?有人真的用过这个包吗?
php - 纯 PHP 中的 OpenPGP 加密
我想在您的网站上创建一个表单,向我发送根据 OpenPGP 标准加密的消息,以便由 Thunderbird 和 Enigmail 解密它们。将包括来自在线商店的订单。我不能使用 GnuPG,因为我的服务器不支持它。我发现纯 PHP 中的 OpenPGP 实现可在https://github.com/bendiken/openpgp-php/tree/master/lib和http://phpseclib.sourceforge.net/上找到。我成功只加密了 RSA 密钥,但我无法解密 Thunderbird。
如何使用或不使用上述软件将纯 PHP 中的消息加密为 OpenPGP 标准?
示例 PGP 密钥对(我知道我在做什么发布 - 专门为发布创建):
示例 RSA 密钥对(其他 PGP 密钥对):
encryption - GnuPG/PGP 和 SSL:共享同一个私钥?
我正在尝试整理我对数字签名和加密的使用。我知道有两种主要方法可以做到这一点:PGP 方式和 SSL 方式。
我想知道是否可以为 SSL 证书和 GnuPG 使用相同的私钥,前提是这是一个 RSA 2048 位密钥。
我已经有一个由 CA 签名的 SSL 证书,所以我希望将该证书的私钥用作 GnuPG 主私钥。
我知道我们不能以这种方式在 SSL 和 GnuPG 之间进行断言,但我希望只有一个私钥(因此只需要保护一份数据)
谢谢
authentication - EIDAuthenticate 上的智能卡身份验证
也许我只是一个完全的新手,但我真的坚持使用 EIDAuthenticate 为 Windows 实现智能卡身份验证。
我不得不为该卡下载一个通用 (OpenPGP) 微型驱动程序,因为它实际上是未知的并且没有可用的驱动程序。但是,我正在尝试将证书放在上面,但它不会让我这样做。
为了写入卡,微型驱动程序是否必须对其进行规定才能这样做?
任何指导将不胜感激 :)
vb.net - 带有 VB.Net 的充气城堡 OpenPGP
我主要是为其他需要它的人发布这个,因为互联网上似乎非常缺乏这方面的资源。我确实找到的样本似乎充其量只是蹒跚而行,对我来说从来没有用过。如果你看到或发现这门课有什么问题,我很想知道。请注意,该类针对我的特定实现稍作修改,但在 Bouncy Castle .Net 源代码的 1.7 版中应该可以正常工作。
javascript - 在 Javascript 中生成 PGP 密钥对,并使用加密的 PGP 私钥对文本进行签名
我正在写一些需要做电子签名的东西。
有些用户会像我一样是极客,并且已经拥有自己的 PGP 密钥。大多数人不会,也不想安装或维护它。
作为一种解决方法,我想执行以下操作:
- 为使用单独的“签名”密码的用户创建一个公钥/私钥对。
- 当我需要用户签署某些东西时,向用户提供明文以及其中的一些其他信息,例如时间戳和其他引用,并让他们使用我存储的私钥对其进行签名。
基本上有两种方法可以做到这一点(对于没有自己的 PGP 密钥的用户)。
- 用户通过 SSL 向我提交签名密码。我在服务器端生成私钥对,并在需要签名时临时解锁私钥。我根本不存储密码,我尽快摆脱解锁的私钥。
- 用户在 Javascript 中生成 pub/priv 密钥。他们将公钥和加密私钥发送给我,并在本地存储中保留一份副本。当他们需要签署某些东西时,我确保他们的本地存储有它(如果没有,则推送),他们使用 JS 在本地解密和签署文本。我从来没有看到他们的签名密码,也没有看到他们解锁的私钥。
无论哪种方式,我还使用服务器的密钥对结果进行签名。但我也需要有一种用户唯一的、不可否认的方式让用户签署文本,并且让他们拥有我维护的 PGP 密钥是最简单的方法。
选项 1 操作起来要简单得多,并且可以很好地满足我的最低需求。
选项 2 更值得信赖,因为除非我颠覆 JS(我仍然可以这样做),否则我自己不能使用他们的私钥。
但是,为了做到这一点,我需要一个 JavaScript 库,它可以
- 生成一个 pub/priv 密钥对
- 解密私钥以供使用
- 使用该私钥签署一段文本
哪些图书馆可以做到这一点?
PS请注意,我不需要加密给定的公钥。我需要用户使用他们自己的(加密存储的)密钥进行签名。
hash - OpenPGP 签名包散列数据
RFC 4880 将版本 4 签名数据包标签 2 描述为
我假设倒数第二行意味着只取散列子包的字符串并用散列算法对其进行散列并取其前 2 个字节。但是,无论我做什么,我似乎都无法得到它。
我很久以前生成了这个假密钥
我认为我应该做的:
从pgpdump.net,我看到散列 (SHA 1) 值的左侧 2 个字节45 24
用于第一个签名包和51 ac
第二个签名包。我得到52 f0
了两者。显然,我不包括一些信息,但它是什么?散列后的子包相同,散列数据之前的所有数据也相同,只是它们是不同类型的签名包(0x13 / 0x18)。即使我从数据包中添加/获取字符,我也无法获得任何正确的哈希值。除了哈希值之外,生成的密钥与此处显示的密钥完全相同。
我应该散列的数据是什么?
编辑:如果稍后发现:
但是正在签名的数据是什么?签名前的所有数据包?只是当前签名包之前的包?
上面的关键示例由packet 6 + packet 13 + packet 2 + packet 14 + packet 2
. 我已经尝试了各种组合packet 6
,,packet 13
和packet 2
(从版本号到散列数据包括在内),但仍然找不到散列到正确值的字符串
standards - 这个模棱两可的代词在 RFC 4880 的文本中代表什么?
RFC 4880 sec 5.1中的“ this ”是什么意思?
上述公式中的值“m”是从会话密钥导出的,如下所示。首先,会话密钥以单字节算法标识符为前缀,该标识符指定用于加密以下对称加密数据包的对称加密算法。然后附加两个八位字节的校验和,它等于前面的会话密钥八位字节的总和,不包括算法标识符,模 65536。然后按照 PKCS#1 块编码 EME-PKCS1-v1_5 中的描述对该值进行编码[RFC3447] 的第 7.2.1 节形成上述公式中使用的“m”值。有关 OpenPGP 使用 PKCS#1 的说明,请参阅本文档的第 13.1 节。
是 2 个八位字节的校验和吗?是整个“一个八位字节前缀+会话密钥+校验和”吗?
ruby - 如何使用 OpenPGP 和 Ruby 对数据进行非对称加密?
这感觉应该很简单,但我没有任何运气。
场景是这样的:我有一个公共 *.asc 密钥文件。我想使用这个文件(不是我的个人密钥环)来加密服务器上的数据,以便我可以使用密钥在本地对其进行解密。
从命令行我可以使用gpg
. 我查看了 GPGME 和 OpenPGP gems,但无法弄清楚如何使用它们。文档(尤其是 OpenPGP)非常稀少。
例如,这是我尝试使用 GPGME 的东西,但没有任何运气:
有没有人经历过这个?这肯定不会那么复杂吧?