2014-01-22 58 views
3
var encrypted = CryptoJS.AES.encrypt(jsonStr, 'youngunicornsrunfree', { format: JsonFormatter }); 

//convert encrypted to a string for transfer 
//convert string back to Crypto object so it can be decrypted. 

var decrypted = CryptoJS.AES.decrypt(encrypted, "youngunicornsrunfree", { format: JsonFormatter }); 

以上兩步,工作正常。但在兩者之間,我需要將加密轉換爲字符串以便通過網絡傳輸,然後再將其轉換回來。我怎樣才能做到這一點?如何轉換爲字符串並用CryptoJs再次返回

回答

8

讓我們簡化這個以便能夠解決問題。杉杉我們開始是這樣的:

jsonStr = '{"something":"else"}'; 
var encrypted = CryptoJS.AES.encrypt(jsonStr, 'youngunicornsrunfree'); 
var decrypted = CryptoJS.AES.decrypt(encrypted, "youngunicornsrunfree"); 
console.log(decrypted.toString(CryptoJS.enc.Utf8)); 

這賦予我們的答案jsonStr後,我們進行加密然後進行解密。但是,我們希望將其發送到服務器。通過使用toString()來提取加密的字符串,我們可以輕鬆地做到這一點。聽起來很簡單吧?假設我們需要將加密的jsonStr發送到服務器。試試這個

jsonStr = '{"something":"else"}'; 
var encrypted = CryptoJS.AES.encrypt(jsonStr, 'youngunicornsrunfree'); 
console.log("We send this: "+encrypted.toString()); 

現在說我們發送了一些東西,我們得到它回來。我們可以這樣做:

var messageFromServer = "U2FsdGVkX19kyHo1s8+EwNuo/LQdL3RnSoDHU2ovA88RtyOs+PvpQ1UZssMNfflTemaMAwHDbnWagA8lQki5kQ=="; 
var decrypted = CryptoJS.AES.decrypt(messageFromServer, "youngunicornsrunfree"); 
console.log(decrypted.toString(CryptoJS.enc.Utf8)); 
+0

這不工作不幸。我收到一個空白字符串。如果我解密加密而沒有將其轉換爲字符串,它會正常工作,但一旦我將其轉換爲字符串後就會失敗。 (即使使用你的簡單例子) – Baconbeastnz

+0

@Baconbeastnz空白的結果很可能不會輸入密碼或加密的信息。嘗試在包含腳本'C​​ryptoJS.AES.decrypt(CryptoJS.AES.encrypt('It works !!!','pass')。toString(),'pass')。toString(CryptoJS .enc.Utf8)'如果有效,那麼在解密或使用錯誤的密碼之前,您可能正在操作加密的消息。 – DutGRIFF

相關問題