63 Acc.Long[0] = (
unsigned long)SA;
64 Acc.Long[1] = (
unsigned long)SB;
65 Acc.Long[2] = (
unsigned long)SC;
66 Acc.Long[3] = (
unsigned long)SD;
67 Acc.Long[4] = (
unsigned long)SE;
75 int Result(
void * result)
const;
77 void Hash(
void const * data,
long length);
84 unsigned long Long[5];
85 unsigned char Char[20];
94 SHADigest FinalResult;
111 SRC_BLOCK_SIZE=16*
sizeof(long),
114 PROC_BLOCK_SIZE=80*
sizeof(
long)
117 long Get_Constant(
int index)
const {
118 if (index < 20)
return K1;
119 if (index < 40)
return K2;
120 if (index < 60)
return K3;
125 long Function1(
long X,
long Y,
long Z)
const {
126 return(Z ^ ( X & ( Y ^ Z ) ) );
130 long Function2(
long X,
long Y,
long Z)
const {
135 long Function3(
long X,
long Y,
long Z)
const {
136 return( (X & Y) | (Z & (X | Y) ) );
140 long Function4(
long X,
long Y,
long Z)
const {
144 long Do_Function(
int index,
long X,
long Y,
long Z)
const {
145 if (index < 20)
return Function1(X, Y, Z);
146 if (index < 40)
return Function2(X, Y, Z);
147 if (index < 60)
return Function3(X, Y, Z);
148 return Function4(X, Y, Z);
152 void Process_Block(
void const * source, SHADigest & acc)
const;
155 void Process_Partial(
void const * & data,
long & length);
178 char Partial[SRC_BLOCK_SIZE];