簡體   English   中英

加密有效,但不能在openpgp.js中解密

[英]Encrypt works, but not decrypt in openpgp.js

我正在嘗試使用openpgp.js解密和加密字符串。

加密工作正常,但我無法解密。 我真的無法正常工作。

這是加密的有效示例: https : //jsfiddle.net/d4vL8ueh/1/

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/

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();

有兩個問題:

首先,在設置options.message時將不存在的message變量傳遞到readArmored 應該使用encrypted變量代替:

message: await openpgp.message.readArmored(encrypted),

其次,私鑰是加密的,因此需要對其進行解密才能使用。 這可以通過在使用之前在密鑰上調用decrypt()來完成:

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/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM