2016-04-18 72 views
2

對我有一個小問題。我正在使用Javascript庫(jsencrypt)在瀏覽器中加密消息。然後將此消息發送到使用Java庫(bouncycastle)進行解密的後端。我的問題是,儘管我可以使用它們似乎不想一起工作的兩個庫來加密和解密郵件。所以當我在瀏覽器中加密我的消息並將其發送到後端時,我最終得到亂碼。有誰知道這裏發生了什麼?使用jsencrypt進行RSA加密並使用彈性城堡進行解密?

JSENCRYPT

var text = "This is another msg!"; 
var pubkey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwyTZf5gRWJdEevtK7sJSz14lhs1Jw7+aFhGtr4cbDGxdiXH8J+BwuYmBc6QFMhRw7AeYcgkx9zPb3SICzr+oK17RMA6T66dH+GPXp75LFUmfONfk2JdSeO80mMODGctSuefWDvoQ24Cq0Bz+ysrhP7hRqvJso5a0GMNPwt8ErtWfz4HZjSsaaZ7gXga2h5dq1OTcGNfevkDN9CJtFW/0Wwb/F6cnXngVHE41rsN4POUB3IWcX2CrCGxSraa+xsT/P7AJ8HRJ4wcjl9G2K/rlHJ8ZXZKlIuWwEzx0/F0IjE+S93tLpDgt6YJxjWqYqjL2uuJAGmEU323+PWA3jFTC+QIDAQAB";   

var encrypt = new JSEncrypt(); 
encrypt.setPublicKey(pubkey); 
var ciphertext = encrypt.encrypt(text); 
console.log("ciphertext : " + ciphertext); 

var decrypt = new JSEncrypt(); 
decrypt.setPrivateKey($("#privkey").val()); 
var plaintext = decrypt.decrypt(ciphertext); 
console.log("plaintext : " + plaintext); 

BouncyCastle的

String cipherText = "jQ/I+oyyIfG5ARIHZsa6MfxwHciCt+3p6l+bLh4NPinq2s8eDjbO9O8abhVt2xuBQQcPAIaqbiP3Y3vRFYLOD2O+inKWiL1SpSBxvUb0XlWMgLmOqWUL6w6sL2iEla3i5EbdlrkK0uLA7QOUc6/fGVyLVe8VL7Vv4BGlo/cxR2FN74HK4MtLFRNaLKejwD6WbCNQoz4sIMA/Ez8GRSVEMyeYVZoWELShvyIRCqVADboAeuEP5l+oFlzgQfW6HFdpPnX+9TnHrbezdWhXiuJiD1Mq4VTicsya50MNcXJuPDV7NINYZs72UCS8NTYvfVkFc2lO7EUlDvvJ7Ns4wWuuWQ=="; 

PemReader pemReader = new PemReader(new InputStreamReader(new FileInputStream("priv.pem"))); 
PemObject pemObject = null; 

try 
{ 
    pemObject = pemReader.readPemObject(); 

} finally { 

    pemReader.close(); 
} 

PrivateKey privateKey = EncryptionUtil.generatePrivateKey(pemObject.getContent()); 
byte[] plainText = EncryptionUtil.asymDecrypt(privateKey, cipherText.getBytes()); 
System.out.println(new String(plainText)); 
+0

您是否試過在正面和背面加密,並查看密文是否匹配? –

+0

如果Java示例將'cypherText'解密爲'This is another msg !',預期的結果是什麼? – stjepano

+0

@stjepano是的,這是我希望做的。 –

回答

1

@ EbbeM.Pedersen

您正確地得到不同的默認填充米頌歌。關鍵詞 像RSA-OAEP填充& PKCS#1填充浮現在腦海。

確實是這個問題。我將bouncycastle中的默認填充更改爲PKCS#1,現在它全部運行。

非常感謝。

+0

我遇到了同樣的問題,您是如何更改BC的默認填充? – EpicJoker

+0

@WarrenLankieVanTonder你需要設置你的非對稱密碼使用以下設置RSA/None/PKCS1Padding –

+0

謝謝@ T-Pane我現在看看。 – EpicJoker

相關問題