no commit message
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
/**
|
||||
* SimpleIVMode
|
||||
*
|
||||
* A convenience class that automatically places the IV
|
||||
* at the beginning of the encrypted stream, so it doesn't have to
|
||||
* be handled explicitely.
|
||||
* Copyright (c) 2007 Henri Torgemane
|
||||
*
|
||||
* See LICENSE.txt for full license information.
|
||||
*/
|
||||
package com.hurlant.crypto.symmetric
|
||||
{
|
||||
import flash.utils.ByteArray;
|
||||
import com.hurlant.util.Memory;
|
||||
|
||||
public class SimpleIVMode implements IMode, ICipher
|
||||
{
|
||||
protected var mode:IVMode;
|
||||
protected var cipher:ICipher;
|
||||
|
||||
public function SimpleIVMode(mode:IVMode) {
|
||||
this.mode = mode;
|
||||
cipher = mode as ICipher;
|
||||
}
|
||||
|
||||
public function getBlockSize():uint {
|
||||
return mode.getBlockSize();
|
||||
}
|
||||
|
||||
public function dispose():void {
|
||||
mode.dispose();
|
||||
mode = null;
|
||||
cipher = null;
|
||||
Memory.gc();
|
||||
}
|
||||
|
||||
public function encrypt(src:ByteArray):void {
|
||||
cipher.encrypt(src);
|
||||
var tmp:ByteArray = new ByteArray;
|
||||
tmp.writeBytes(mode.IV);
|
||||
tmp.writeBytes(src);
|
||||
src.position=0;
|
||||
src.writeBytes(tmp);
|
||||
}
|
||||
|
||||
public function decrypt(src:ByteArray):void {
|
||||
var tmp:ByteArray = new ByteArray;
|
||||
tmp.writeBytes(src, 0, getBlockSize());
|
||||
mode.IV = tmp;
|
||||
tmp = new ByteArray;
|
||||
tmp.writeBytes(src, getBlockSize());
|
||||
cipher.decrypt(tmp);
|
||||
src.length=0;
|
||||
src.writeBytes(tmp);
|
||||
}
|
||||
public function toString():String {
|
||||
return "simple-"+cipher.toString();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user