2017-03-17 45 views
0

下面是我簡單的代碼(努力學習PGP是如何工作的):OpenPGPJS:錯誤解密消息:沒有對稱加密的會話密鑰包中發現

requirejs(['./openpgp'], function(openpgp) { 

    openpgp.initWorker({ 
     path: './openpgp.worker.js' 
    }); 

    openpgp.config.aead_protect = true; 


    var fileContents = "Hello world!!"; 

    var encryptionCode = function(e) { 
     var options; 
     var encrypted; 
     var myKey = {}; 

     myKey.pubkey = 
`-----BEGIN PGP PUBLIC KEY BLOCK----- 

mQENBFjMFRwBCACtu5EG8GusNpr5O4wrb3fykjPegUh9KD/ErWrplmXcbtp6T/XH 
FPkc5cyMme7PxxlcFy3fshMDPg0adTGi8/TPygmO9THtjHYqynge0hxDyafP39xE 
2DKkyuLyV3KxNiUfr+NUB3MQHktqiS/pPK1MJUQdHjYPHax5QT1bMgffx36tM5vo 
d3rdu4AMmLgnSlakmWus/hHMFUgXdp4Q0LWf7uVTXTwbnTkfLQOumj+1SiYV40BL 
rxgiyW172uqy6/hqK9JgOvAUjWZiO9aNyexENzA8Y+Oyy3OWX91CKTYiE2eQKhFK 
YlTf/AFgrnFd0wgAFkZ0dWj51x7kH1a1Ks8/ABEBAAG0DXJhdmlAdGVzdC5jb22J 
ARwEEAECAAYFAljMFRwACgkQc0zV1uezYVSN8Qf+NYyVvKK2HbF+Qn7j+Ed0esK2 
OS6xVqdlFfUSAUq1ER13ffc4Darj9Z2LJuOvQ4M11IYlorXGdtiay55oT/xoljDr 
HHIYzlQ4h6OzOJP6IUxIS0nqtKZCLhvvEYL/vOb/AeOMSo/ZWHD1RjCnpv0vVXki 
4U+kAI8+hfI/QQrVco83xWhH0yiO/HH0eHVLkAiAraqv0zTSX6ttpnYDyK+mwLHt 
bgWzzjUi1KZrNtR2CLU8nCUjyHLau1bkZnysq7mAAn69VEVAQ833WnKwBG7uIsym 
lcZiCtOtIq40kP1wysObkgfLkD37LW3VpzY2i4+wiWa7i8tBYMvm58BYTCLguA== 
=Xm9f 
-----END PGP PUBLIC KEY BLOCK----- 
`; 

     myKey.privkey = 
`-----BEGIN PGP PRIVATE KEY BLOCK----- 

lQOsBFjMFRwBCACtu5EG8GusNpr5O4wrb3fykjPegUh9KD/ErWrplmXcbtp6T/XH 
FPkc5cyMme7PxxlcFy3fshMDPg0adTGi8/TPygmO9THtjHYqynge0hxDyafP39xE 
2DKkyuLyV3KxNiUfr+NUB3MQHktqiS/pPK1MJUQdHjYPHax5QT1bMgffx36tM5vo 
d3rdu4AMmLgnSlakmWus/hHMFUgXdp4Q0LWf7uVTXTwbnTkfLQOumj+1SiYV40BL 
rxgiyW172uqy6/hqK9JgOvAUjWZiO9aNyexENzA8Y+Oyy3OWX91CKTYiE2eQKhFK 
YlTf/AFgrnFd0wgAFkZ0dWj51x7kH1a1Ks8/ABEBAAH/AwMCAqaV72qGxntgHjJJ 
u1IAcTFlGt4e5nXAWGz9nMhQ84p4gHPT3wecMFul9Y8f3Xe8E6+bfaqESrtAaw28 
UeRK3HpkYOYgcamC/iIMyZ8/GyqI/VrWpu+ola0WnLQUu58HogpHuk8ezb9Lfypq 
qQVp3rTd58sT/RG/25cwSl5QDWZcE2CWTFc9SuwjtRlTj++Hw1ckqGQsGpVoGA3G 
Gk5lfK06a3GqDzCaoNG5NUUjKEFhxUfOUCOfV2pyUT+9SBc+HoUptJ/csA/kPCB6 
8xW3ycAQFLpYIqLcOJ9H3EMb8FIat2fPyaaocs+yIcYI0VLqS46Rhkj4apBQ8X5d 
n3xlL32X/0CA5QKt6ybfXI6uHWvjbyyFl6bw8f8V23fyAXBiqLvz1stGtHTt/IWS 
4j2MtOVxOumFY+dG2IHfyWfvh561drasQovtwh9diB4k96dnPYFwlG/8WRkhNF3R 
Gkjwy0KOkr/LuvY7H9gFhyYDrXmXrcF3lUYxbQqou4V7nYOKynCGs8phWIezFVbN 
4W0ew0rU4MqyAMdZ2YGM/hILSc2/RtufNR/nlPTe7mMGto8TjeVE0LTWcVs+I+A9 
Iep0zwJLhdDGH5i0TcHPgxO+mzfcU2V5TrzLMuAlz9xZz3PKHlPMd5GV6THAMHM5 
ZJB7P7skxC1zHdL0C00BFxG3QpDMKlFqozE2al7rizU0TtpGPWeOFRjThLuG+4wE 
k+zj0EYSxsye7JRkpktMaX0DKk5dtSJn8lcFPR425E+clCwAWyd6Nhf0xEGWbRtL 
D2OUWU//FQpDNS74+1EWWiEvfkuz9hZDk19KmpB6amiu4nuyzQJvWB8+gNiSNPZs 
af95YSRueaPUYwMFTEhXVZGj1ZX0fM6dfxi4BE/JM7QNcmF2aUB0ZXN0LmNvbYkB 
HAQQAQIABgUCWMwVHAAKCRBzTNXW57NhVI3xB/41jJW8orYdsX5CfuP4R3R6wrY5 
LrFWp2UV9RIBSrURHXd99zgNquP1nYsm469DgzXUhiWitcZ22JrLnmhP/GiWMOsc 
chjOVDiHo7M4k/ohTEhLSeq0pkIuG+8Rgv+85v8B44xKj9lYcPVGMKem/S9VeSLh 
T6QAjz6F8j9BCtVyjzfFaEfTKI78cfR4dUuQCICtqq/TNNJfq22mdgPIr6bAse1u 
BbPONSLUpms21HYItTycJSPIctq7VuRmfKyruYACfr1URUBDzfdacrAEbu4izKaV 
xmIK060irjSQ/XDKw5uSB8uQPfstbdWnNjaLj7CJZruLy0Fgy+bnwFhMIuC4 
=Qx/K 
-----END PGP PRIVATE KEY BLOCK-----`; 

     options = { 
      data: fileContents, 
      publicKeys: openpgp.key.readArmored(myKey.pubkey).keys 
     }; 

     openpgp.encrypt(options).then(function(ciphertext) { 
      myKey.encrypted = ciphertext.data; 
      console.log("Encrypted: ", myKey.encrypted); 

      options = { 
       message: openpgp.message.readArmored(myKey.encrypted),  // parse armored message 
       privateKeys: openpgp.key.readArmored(myKey.privkey).keys[0], 
       "password": "[email protected]" 
      }; 

      openpgp.decrypt(options).then(function(plaintext) { 
       console.log("plaintext", plaintext); 
       return plaintext.data; 
      }); 

     }); 

    }(this); 

}); 

我已經產生了從在線網站的公鑰和私鑰。它僅用於測試目的。

我可以看到字符串編碼正確(console.log)。但在解密時,它會拋出異常錯誤解密消息:沒有對稱加密的會話密鑰包中發現

我做錯了嗎?請幫幫我。

回答

0

最終,我發現我必須解密我的私鑰才能解密郵件。

下面的代碼幫我完成了加密/解密演示:

options = { 
    message: openpgp.message.readArmored(myKey.encrypted), 
    privateKeys: openpgp.key.readArmored(myKey.privkey).keys[0].decrypt('[email protected]'), 
    "password": "[email protected]" 
}; 

openpgp.decrypt(options).then(function(plaintext) { 
    console.log("Encrypted message got decrypted: ", plaintext.data); 
    return plaintext.data; 
}); 

感謝。