// iterative hash function private byte[] Func() { var intBlock = GetBigEndianBytes(_block); _hmacNotBuiltIn.Initialize(); _hmacNotBuiltIn.TransformBytes(_salt, 0, _salt.Length); _hmacNotBuiltIn.TransformBytes(intBlock, 0, intBlock.Length); var temp = _hmacNotBuiltIn.TransformFinal().GetBytes(); var result = ArrayUtils.Clone(temp); uint i = 2; while (i <= _iterations) { temp = _hmacNotBuiltIn.ComputeBytes(temp).GetBytes(); var j = 0; while (j < _blockSize) { result[j] = (byte)(result[j] ^ temp[j]); j++; } i++; } _block++; return(result); }
} // end function Initialize // iterative hash function private byte[] Func() { byte[] INT_block = GetBigEndianBytes(Block); hmacNotBuiltIn.Initialize(); hmacNotBuiltIn.TransformBytes(Salt, 0, Salt.Length); hmacNotBuiltIn.TransformBytes(INT_block, 0, INT_block.Length); byte[] temp = hmacNotBuiltIn.TransformFinal().GetBytes(); byte[] result = temp.DeepCopy(); UInt32 i = 2; Int32 j = 0; while (i <= IterationCount) { temp = hmacNotBuiltIn.ComputeBytes(temp).GetBytes(); j = 0; while (j < BlockSize) { result[j] = (byte)(result[j] ^ temp[j]); j++; } // end while i++; } // end while Block++; return(result); } // end function Func