4
* An ActionScript 3 implementation of the ECB confidentiality mode
5
* Copyright (c) 2007 Henri Torgemane
7
* See LICENSE.txt for full license information.
9
package com.hurlant.crypto.symmetric
11
import flash.utils.ByteArray;
12
import com.hurlant.util.Memory;
13
import com.hurlant.util.Hex;
17
* This uses a padding and a symmetric key.
18
* If no padding is given, PKCS#5 is used.
20
public class ECBMode implements IMode, ICipher
22
private var key:ISymmetricKey;
23
private var padding:IPad;
25
public function ECBMode(key:ISymmetricKey, padding:IPad = null) {
27
if (padding == null) {
28
padding = new PKCS5(key.getBlockSize());
30
padding.setBlockSize(key.getBlockSize());
32
this.padding = padding;
35
public function getBlockSize():uint {
36
return key.getBlockSize();
39
public function encrypt(src:ByteArray):void {
42
var blockSize:uint = key.getBlockSize();
43
var tmp:ByteArray = new ByteArray;
44
var dst:ByteArray = new ByteArray;
45
for (var i:uint=0;i<src.length;i+=blockSize) {
47
src.readBytes(tmp, 0, blockSize);
54
public function decrypt(src:ByteArray):void {
56
var blockSize:uint = key.getBlockSize();
59
if (src.length%blockSize!=0) {
60
throw new Error("ECB mode cipher length must be a multiple of blocksize "+blockSize);
63
var tmp:ByteArray = new ByteArray;
64
var dst:ByteArray = new ByteArray;
65
for (var i:uint=0;i<src.length;i+=blockSize) {
67
src.readBytes(tmp, 0, blockSize);
76
public function dispose():void {
82
public function toString():String {
83
return key.toString()+"-ecb";
b'\\ No newline at end of file'