2015-11-06 39 views
1

的問題是,當例如對圖像進行解碼,我得到一個損壞的二進制數據,我試圖將其轉換爲Base64文本,但它是無效的顯示,有沒有一個解決方案解密PGP加密的有效圖像解密JavaScript的二進制使用的OpenPGP

我使用這個庫,告訴我,這是有效的解密二進制? http://openpgpjs.org/

ENCRYPT:

var key = request.data.publicKey; 
var publicKey = openpgp.key.readArmored(key); 
var base64Message = request.data.message;//btoa(request.data.message); // encoding binary data directly 
openpgp.encryptMessage(publicKey.keys, base64Message).then(function(pgpMessage) { 
    console.log('encrypted'); 
    console.log(pgpMessage); 
    sendResponse({result: pgpMessage}); 
}).catch(function(error) { 
    console.log(error); 
}); 

解密

var key = openpgp.key.readArmored(request.data.privateKey); 
console.log(key); 

if(key.keys.length > 0) 
{ 
    key = key.keys[0]; 
    key.decrypt(request.data.password); 
    var message = openpgp.message.readArmored(request.data.message); // error can't read pgp encoded binary data 

    openpgp.decryptMessage(key,message).then(function(plaintext) { 
     //do stuff...plaintext - is binary data in text 
    }); 
} 

我直接編碼的二進制,然後試圖解碼,但我得到一個錯誤:

未知的ASCII a rmor type

+0

@ ArtjomB.using該庫有加密的例子/解密http://openpgpjs.org/ – user3112115

+0

您需要添加你親自來,你現在不能解密的加密圖像的代碼。如果您在瀏覽器中運行這一點,並要顯示的圖像爲base64,你應該將其轉換爲你加密前的Base64。然後,當它解密時,它將準備好使用。 –

+0

@DanPrince嗨,你看我已經添加了我如何直接編碼的二進制,然後試圖解碼的例子,但我得到一個錯誤:未知的ASCII裝甲型 – user3112115

回答

0

Base 64用於將字節包裝到ASCII裝甲中,以便您可以通過面向文本的接口傳輸二進制數據。你需要傳輸的是似乎寫入pgpMessage的密文。你應該將密文編碼到64位,你不應該基於64編碼明文消息。