/** * TripleDESKey * * An Actionscript 3 implementation of Triple DES * Copyright (c) 2007 Henri Torgemane * * Derived from: * The Bouncy Castle Crypto package, * Copyright (c) 2000-2004 The Legion Of The Bouncy Castle * (http://www.bouncycastle.org) * * See LICENSE.txt for full license information. */ package com.hurlant.crypto.symmetric { import flash.utils.ByteArray; import com.hurlant.util.Memory; import com.hurlant.util.Hex; public class TripleDESKey extends DESKey { protected var encKey2:Array; protected var encKey3:Array; protected var decKey2:Array; protected var decKey3:Array; /** * This supports 2TDES and 3TDES. * If the key passed is 128 bits, 2TDES is used. * If the key has 192 bits, 3TDES is used. * Other key lengths give "undefined" results. */ public function TripleDESKey(key:ByteArray) { super(key); encKey2 = generateWorkingKey(false, key, 8); decKey2 = generateWorkingKey(true, key, 8); if (key.length>16) { encKey3 = generateWorkingKey(true, key, 16); decKey3 = generateWorkingKey(false, key, 16); } else { encKey3 = encKey; decKey3 = decKey; } } public override function dispose():void { super.dispose(); var i:uint = 0; if (encKey2!=null) { for (i=0;i