2013-01-04 166 views
0

我想對Uint8Array進行加密和解密,因爲我已經從此link下載了CryptoJS庫。我如何使用JavaScript加密和解密Uint8Array?

我已經測試了一個虛擬字符串上的aes密碼算法,它的工作正常。

現在我想要它在Uint8Array上實現它。該數組正在保存視頻文件數據。

由於上一個字符串的加密和解密工作,我必須把它轉換爲一個字符串,我已經提到這個問題貼在計算器click here

代碼加密:

var encrypted = CryptoJS.AES.encrypt(String.fromCharCode.apply(null, uInt8Array), "test"); 

但是當我運行代碼以下錯誤即將到來:

Uncaught RangeError: Maximum call stack size exceeded 

我如何使它工作?

回答

2

該錯誤是由於String.fromCharCode.apply(null, uInt8Array)部分導致的,CryptoJS從未被調用過。

請注意,fromCharCode的完整語法是String.fromCharCode(n1, n2, ..., nX),所以給定緩衝區的所有元素必須移動到堆棧以便apply該函數。

你必須使用一個非常大的緩衝區,你說的視頻文件,所以這一定是你得到一個stackoverflow錯誤的原因。

嘗試使用`CryptoJS.lib.WordArray」代替,如下所述:

http://groups.google.com/group/crypto-js/browse_thread/thread/4ce6fddad709954d?pli=1

+0

感謝胡安的回答。這個緩衝區包含視頻文件數據(v11.webm 10.5 MB)。我怎樣才能應用加密/解密? –

+0

@PankajKhurana我不是CryptoJS的用戶,只是指出你在正確的方向。無論如何,快速瀏覽一下庫文檔可以發現_「密碼算法接受字符串或CryptoJS.lib.WordArray實例」_。我想你可以從那裏跟進,我會這樣做。 –

+0

我看了一下,但找不到任何相關信息。你能否建議我可以完成這項工作的其他圖書館? –