![](/img/trans.png)
[英]How to encrypt/decrypt a PGP message in Objective-C using 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.