Esempio n. 1
0
        public static byte[] GetHash(byte[] input)
        {
            if (null == input)
            {
                throw new System.ArgumentNullException("input", "Unable to calculate hash over null input data");
            }

            //Intitial values defined in RFC 1321
            ABCDStruct abcd = new ABCDStruct();

            abcd.A = 0x67452301;
            abcd.B = 0xefcdab89;
            abcd.C = 0x98badcfe;
            abcd.D = 0x10325476;

            //We pass in the input array by block, the final block of data must be handled specialy for padding & length embeding
            int startIndex = 0;

            while (startIndex <= input.Length - 64)
            {
                MD5Core.GetHashBlock(input, ref abcd, startIndex);
                startIndex += 64;
            }
            // The final data block.
            return(MD5Core.GetHashFinalBlock(input, startIndex, input.Length - startIndex, abcd, (Int64)input.Length * 8));
        }
Esempio n. 2
0
        internal void calculateChecksum(String publicKey, String privateKey, String uuid, String huid)
        {
            String getString  = this.urlParamPayload(publicKey, uuid, huid);
            String getPayload = MD5Core.GetHashString(getString);

            Utils.log("Hashing " + getString + " --> " + getPayload);

            String payload = null;

            if (this.postData != null)
            {
                String postPayload = MD5Core.GetHashString(this.postData);
                Utils.log("Hashing " + this.postData + " --> " + postPayload);

                payload = MD5Core.GetHashString(getPayload + postPayload);
                Utils.log("Hashing " + getPayload + postPayload + " --> " + payload);
            }
            else
            {
                payload = getPayload;
            }

            String result = MD5Core.GetHashString(payload + privateKey);

            Utils.log("Hashing " + payload + privateKey + " --> " + result);

            this.checksum = result;
        }