首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Openpgp.js无法解密pgp消息

Openpgp.js无法解密pgp消息
EN

Stack Overflow用户
提问于 2019-02-20 03:27:36
回答 1查看 3.2K关注 0票数 0

我使用的是openpgp.js版本2.2.1。

所以我很好地加密了一条信息

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const options = {
    data: voteObject.option,       // input as Message object
    publicKeys: (pgp.key.readArmored(pubkey)).keys, // for encryption
};

pgp.encrypt(options).then(function(ciphertext) {
    console.log(ciphertext.data);
});

这将记录加密的消息。我现在遇到的问题是我无法破解它。我在这一点上完全不知所措,老实说,我已经尽了全力,我不知道自己在做什么。我知道这没什么可做的,但我真的没有什么可做的。

任何建议都将是一个巨大的帮助!

EN

回答 1

Stack Overflow用户

发布于 2019-02-20 12:05:01

我认为您混淆了密钥的passphrase和用于“简单”加密字符串的password

通常,在PGP中,发送方使用接收方的公钥对消息进行加密。然后,消息的接收方可以用他的秘密密码来解密他的私钥,然后他就可以用所得到的解密私钥来解密该消息。

我在下面添加了一个工作示例:

加密

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const receiverPublicKey = ...;

let publicKeys = (await openpgp.key.readArmored(receiverPublicKey)).keys;
let options = {
    data: 'Hello, World!',
    publicKeys: publicKeys
};

return openpgp.encrypt(options)
    .then((encryptedMessageObject) => {
        return encryptedMessageObject.data; // -----BEGIN PGP MESSAGE----- ... wcBMA0rHUQJA4dCdAQg...
    });

解密

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const receiverPrivateKey = ...;
const receiverPassphrase = 'secret';
const encryptedMessage = '-----BEGIN PGP MESSAGE----- ... wcBMA0rHUQJA4dCdAQg...';

let privKeyObj = (await openpgp.key.readArmored(receiverPrivateKey)).keys[0];
await privKeyObj.decrypt(receiverPassphrase);

let options = {
    message: await openpgp.message.readArmored(encryptedMessage),
    privateKey: privKeyObj
};

return openpgp.decrypt(options)
    .then((plaintextObject) => {
        return plaintextObject.data; // Hello, World!
    });

这是与一个发送方和一个接收方一起使用PGP的通常过程(请注意,消息的signingchecking the signature丢失了)。

现在解密的options中也有options

为此,请参阅文档中的示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var options, encrypted;

options = {
    data: 'Hello, World!',      // input as String
    passwords: ['secret stuff'] // multiple passwords possible
};

openpgp.encrypt(options).then(function(ciphertext) {
    encrypted = ciphertext.data; // '-----BEGIN PGP MESSAGE ... END PGP MESSAGE-----'
});
options = {
    message: openpgp.message.readArmored(encrypted), // parse armored message
    password: 'secret stuff'                         // decrypt with password
};

openpgp.decrypt(options).then(function(plaintext) {
    return plaintext.data; // 'Hello, World!'
});

在这种情况下,password用于加密和解密消息--根本没有公钥或私钥。

我希望这能帮上忙!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54785242

复制
相关文章
重复组合
我们一共有n个区间,区间xi的元素个数表示第i个元素被抽出的次数。由于区间的元素个数可以为0,因此我们需要n+1个隔板来区分这些区间。
灯珑LoGin
2022/10/31
4900
Python - 删除列表中的重复字典
Python 是一个非常广泛使用的平台,用于 Web 开发、数据科学、机器学习以及自动化执行不同的过程。我们可以将数据存储在python中,以不同的数据类型,例如列表,字典,数据集。python字典中的数据和信息可以根据我们的选择进行编辑和更改
很酷的站长
2023/08/11
3601
Python - 删除列表中的重复字典
如何去掉列表中重复的元素
列表,在Python中是最常见的一种数据类型,对它了解的越多,编程的效率就越高。
TalkPython
2019/10/29
7.8K0
如何去掉列表中重复的元素
卷积神经网络中的参数共享/权重复制
参数共享或权重复制是深度学习中经常被忽略的领域。但是了解这个简单的概念有助于更广泛地理解卷积神经网络的内部。卷积神经网络(cnn)能够使那些通过网络馈送的图像在进行仿射变换时具有不变性。这个特点提供了识别偏移图案、识别倾斜或轻微扭曲的图像的能力。
deephub
2020/07/24
2.1K0
卷积神经网络中的参数共享/权重复制
Python——去除列表中的重复元素
set(['I', 'I', 'M', 'E']) set(['I', 'E', 'M']) 集合中,没有重复的元素。利用集合这种数据结构的特性,可以去除列表中的重复元素。 一个列表中可能含有重复元素,使用set()可以实现列表的去重处理,但是无法知道哪些元素是重复的,下面的函数用于找出哪些元素重复了,以及重复的次数。 from collections import Counter a = [1,4,2,3,2,3,4,2] b = Counter(a) #求数组中每个数字出现了几次 print(b)
瑞新
2020/07/07
5K0
python中删除列表中重复元素
在面试中,很可能遇到给定一个含有重复元素的列表,删除其中重复的元素,下边给出三种方法来实现这个功能。
全栈程序员站长
2022/09/07
4.1K0
【说站】Python删除列表中的非字母字符
如果不是字符 a 到 z(大写和小写),则会导致匹配。匹配项被替换为空白字符。您可以将您想要的任何内容放入替换参数中。
很酷的站长
2022/11/24
2.5K0
【说站】Python删除列表中的非字母字符
电话号码的字母组合
难度:中等 来源:17. 电话号码的字母组合 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例: 输入:
用户4456933
2021/06/01
4550
电话号码的字母组合
快速在组合中查找重复和遗失的元素
? ? ? ? ? ? ? ?
望月从良
2018/09/29
4.4K0
快速在组合中查找重复和遗失的元素
电话号码的字母组合
给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下,即与电话按键相同。注意1不对应任何字母。
WindRunnerMax
2020/08/27
4350
使用Python,怎么去除列表中重复的内容?
问:使用Python,怎么去除列表中重复的内容? 今日分享的内容,很简单,很常用。话不多说,直接开始。 mylist = ["a", "b", "a", "c", "c"] mylist = list(dict.fromkeys(mylist)) print(mylist)
TalkPython
2020/12/29
3.6K0
Python中如何获取列表中重复元素的索引?
昨天分享了一个文章,Python中如何获取列表中重复元素的索引?,后来【瑜亮老师】看到文章之后,又提供了一个健壮性更强的代码出来,这里拿出来给大家分享下,一起学习交流。
前端皮皮
2022/08/17
13.5K0
Python中如何获取列表中重复元素的索引?
LeetCode - 电话号码的字母组合
原题地址:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/
晓痴
2019/07/24
5770
LeetCode - 电话号码的字母组合
组合模式在商品分类列表中的应用 顶
{"id":100,"name":"根目录","takeCareProducts":[{"id":200,"name":"可乐","takeCareProducts":[{"id":1,"model":"500ml","name":"可口可乐","price":3}]},{"id":300,"name":"咖啡","takeCareProducts":[{"id":2,"model":"600ml","name":"雀巢咖啡","price":6}]}]}
算法之名
2019/08/20
2K0
组合问题——LeetCode题目17:电话号码的字母组合
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
二环宇少
2020/08/13
6060
组合问题——LeetCode题目17:电话号码的字母组合
11 - 去掉列表或元组中的重复元素
在python 中如何定义集合,集合与列表有什么区别 # 列表 a = [1, 2, 3, 4, 5] print(type(a)) # 元组 b = (1, 2, 3, 4, 5) print(type(b)) # 集合 c = {1, 2, 3, 4, 5} print(type(c)) <class 'list'> <class 'tuple'> <class 'set'> # 区别: # 1. 集合没有重复的元素,而列表可以有重复的元素 a = [1, 2, 2, 3, 4] print(a)
ruochen
2021/05/22
3.6K0
11 - 去掉列表或元组中的重复元素
python 列表的排列组合
permutations/combinations/combinations_with_replacement
用户5760343
2019/09/30
1.3K0
如何更稳健的计算组合最优权重(附代码)
今天分享的论文是Marcos López de Prado 2019年的论文《A ROBUST ESTIMATOR OF THE EFFICIENT FRONTIER》本文主要有两个创新点。
量化投资与机器学习微信公众号
2021/07/29
2.6K0
17. 电话号码的字母组合
示例 1: 输入:digits = "23" 输出:["ad","ae","af","bd","be","bf","cd","ce","cf"] 示例 2: 输入:digits = "" 输出:[] 示例 3: 输入:digits = "2" 输出:["a","b","c"]
CaesarChang张旭
2021/06/22
2830
17. 电话号码的字母组合
点击加载更多

相似问题

具有重复列表的所有组合

11

获取具有重复值的列表的所有组合

15

如何创建具有特定重复模式的字母/数字列表?

17

获取具有k号字母列表的所有n号组合。

12

如何获得具有重复值的列表的所有组合

322
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文