首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >加密工作,但在openpgp.js中不能解密。

加密工作,但在openpgp.js中不能解密。
EN

Stack Overflow用户
提问于 2018-09-28 08:44:42
回答 1查看 566关注 0票数 0

我正在尝试用openpgp.js解密和加密字符串。

加密很好,但我不能解密。我真的不能让它起作用。

下面是加密的一个工作示例:https://jsfiddle.net/d4vL8ueh/1/

代码语言:javascript
复制
var message = "secret message";
const encryptMessage  = async() => {
  if(window.crypto.getRandomValues){
    if(message != ""){
      const publicKeyString = document.getElementById("pubkey").innerHTML;

      var options = {
        message: openpgp.message.fromText(message),
        publicKeys: (await openpgp.key.readArmored(publicKeyString)).keys
      };


openpgp.encrypt(options).then(ciphertext => {
        alert(ciphertext.data);

    })



    }
  }
  else{
    window.alert("This browser does not support basic cryptography!");
  }
}

encryptMessage();

但是解密根本不起作用:https://jsfiddle.net/pceswg0t/2/

代码语言:javascript
复制
const decryptMessage  = async() => {
  encrypted = document.getElementById("encrypted").innerHTML;
  if(window.crypto.getRandomValues){
    if(encrypted != ""){
      const privateKeyString =  document.getElementById("privkey").innerHTML;

      var options = {
        message: await openpgp.message.readArmored(message),
        privateKeys: (await openpgp.key.readArmored(privateKeyString)).keys,
        passphrase: "dfgjk23jkfdklfsdds232334fddf"
      };


openpgp.decrypt(options).then(plaintext => {
        decrypted = plaintext.data
        alert(decrypted);
    })



   }
  }
  else{
    window.alert("This browser does not support basic cryptography!");
  }
}
decryptMessage();
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-28 09:41:19

有两个问题:

首先,在设置message时,一个不存在的readArmored变量被传递到readArmored中.这应该使用encrypted变量,而不是:

代码语言:javascript
复制
message: await openpgp.message.readArmored(encrypted),

其次,私钥是加密的,所以在使用它之前需要对其进行解密。这可以通过在使用前对键调用decrypt()来完成:

代码语言:javascript
复制
var privateKeys = await openpgp.key.readArmored(privateKeyString);
privateKeys.keys[0].decrypt("dfgjk23jkfdklfsdds232334fddf")

var options = {
    message: await openpgp.message.readArmored(encrypted),
    privateKeys: privateKeys.keys
};

下面是一个更新的JSFiddle:https://jsfiddle.net/gfkqbsoz/

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

https://stackoverflow.com/questions/52551532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档