4 * An ActionScript 3 abstract class for the SHA family of hash functions
\r
5 * Copyright (c) 2007 Henri Torgemane
\r
7 * See LICENSE.txt for full license information.
\r
9 package com.hurlant.crypto.hash
\r
11 import flash.utils.ByteArray;
\r
12 import flash.utils.Endian;
\r
14 public class SHABase implements IHash
\r
17 public function SHABase() { }
\r
19 public var pad_size:int = 40;
\r
20 public function getInputSize():uint
\r
25 public function getHashSize():uint
\r
30 public function getPadSize():int
\r
35 public function hash(src:ByteArray):ByteArray
\r
37 var savedLength:uint = src.length;
\r
38 var savedEndian:String = src.endian;
\r
40 src.endian = Endian.BIG_ENDIAN;
\r
41 var len:uint = savedLength *8;
\r
42 // pad to nearest int.
\r
43 while (src.length%4!=0) {
\r
46 // convert ByteArray to an array of uint
\r
49 for (var i:uint=0;i<src.length;i+=4) {
\r
50 a.push(src.readUnsignedInt());
\r
52 var h:Array = core(a, len);
\r
53 var out:ByteArray = new ByteArray;
\r
54 var words:uint = getHashSize()/4;
\r
55 for (i=0;i<words;i++) {
\r
56 out.writeUnsignedInt(h[i]);
\r
58 // unpad, to leave the source untouched.
\r
59 src.length = savedLength;
\r
60 src.endian = savedEndian;
\r
63 protected function core(x:Array, len:uint):Array {
\r
67 public function toString():String {
\r