2

このリンクからCryptoJSライブラリをダウンロードしたため、Uint8Arrayの暗号化と復号化が必要です。

ダミー文字列で aes 暗号アルゴリズムをテストしましたが、正常に動作しています。

今、私はそれを Uint8Array に実装したいと考えています。この配列は、ビデオ ファイル データを保持しています。

暗号化と復号化は文字列で機能するため、スタックオーバーフローに投稿されたこの質問を参照した文字列に変換する必要があります ここをクリック

暗号化のコードは次のとおりです。

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

しかし、コードを実行すると、次のエラーが発生します。

 Uncaught RangeError: Maximum call stack size exceeded 

どうすれば機能しますか?

4

1 に答える 1

2

そのエラーはString.fromCharCode.apply(null, uInt8Array)一部が原因であり、CryptoJS は呼び出されません。

fromCharCodeisの完全な構文に注意してください。そのString.fromCharCode(n1, n2, ..., nX)ため、指定されたバッファのすべての要素をスタックに移動しapplyて関数に移動する必要があります。

あなたが言ったビデオファイルである非常に大きなバッファを使用しているに違いないので、それがstackoverflowエラーが発生した理由であるに違いありません。

ここで説明されているように、代わりに「CryptoJS.lib.WordArray」を使用してみてください。

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

于 2013-01-04T08:04:45.040 に答える