as3cryptoパッケージを使用してフレックス (AIR) でファイルを暗号化/復号化しようとしています。問題は、わずかに大きなファイル (5M 以上) を処理しようとすると、処理時間がとてつもなく長くなり、クライアントがフリーズする (「応答しない」というタイトルが表示される) ことです。フレームのリフレッシュ レートとインターレースします。
暗号化はスムーズに進むようですが、結果を元のドキュメントに復号化しようとすると、パディング エラーが発生します: "エラー: PKCS#5:unpad: 無効なパディング値です。期待 [252]、検出 [152] ]」
私のコードはそうです(開始と終了の間):
- runメソッドは、ファイルが完了するまで繰り返し呼び出されます
- _バッファには、ソース ファイルからのバイト配列が含まれます
- _結果結果
- CHUNKは、毎回処理するバイトのバイトサイズです
暗号は次のように開始されます: Crypto.getCipher("aes-ecb", _key, Crypto.getPad("pkcs5"));
public function run(data:Object):Boolean{ if((_buffer.length-_position)>CHUNK){ processChunk(_position,CHUNK); _position += CHUNK; var e:ProgressEvent = new ProgressEvent(ProgressEvent.PROGRESS,false,false,_position,_buffer.length); this.dispatchEvent(e); return true; }else if(!_isFinnalized){ processChunk(_position,_buffer.length - _position); this.dispatchEvent(new Event(Event.COMPLETE)); finnalize(); } return false; } private function processChunk(position:uint,chunk:uint):void{ var buffer:ByteArray = new ByteArray(); buffer.writeBytes(_buffer,position,chunk); if(_action==ENCRYPT){ _aes.encrypt(buffer); }else{ _aes.decrypt(buffer); } _result.writeBytes(buffer); }
お願い助けて!