public static string GenerateHash(int version_major, string url, int hash_select, int request_id ) { if ( _hasht42 == null ) GenerateTable42 (); if ( _hasht45 == null ) GenerateTable45 (); byte [] hashtable = (version_major == 3) ? _hasht45 : _hasht42; BrokenMD5 md5 = new BrokenMD5 ( (version_major == 3) ? 1 : 0 ); byte [] hash = new byte [ 32 ]; byte [] tmp = Encoding.ASCII.GetBytes ( url ); md5.TransformBlock ( tmp, 0, tmp.Length, tmp, 0 ); md5.TransformBlock ( _copyright, 0, _copyright.Length, _copyright, 0 ); if ( request_id > 0 && version_major == 3 ) { md5.TransformBlock ( hashtable, hash_select * 32, 32, hashtable, hash_select * 32 ); tmp = Encoding.ASCII.GetBytes ( request_id.ToString () ); md5.TransformFinalBlock ( tmp, 0, tmp.Length ); } else { md5.TransformFinalBlock ( hashtable, hash_select * 32, 32 ); } HashToString ( md5.Hash, hash, 0 ); return Encoding.ASCII.GetString ( hash ); }
private static void TransformString(BrokenMD5 md5, string str, bool final) { byte [] tmp = Encoding.ASCII.GetBytes(str); if (final) { md5.TransformFinalBlock(tmp, 0, tmp.Length); } else { md5.TransformBlock(tmp, 0, tmp.Length, tmp, 0); } }
public static string GenerateHash(int version_major, string url, int hash_select, int request_id) { if (_hasht42 == null) { GenerateTable42(); } if (_hasht45 == null) { GenerateTable45(); } byte [] hashtable = (version_major == 3) ? _hasht45 : _hasht42; BrokenMD5 md5 = new BrokenMD5((version_major == 3) ? 1 : 0); byte [] hash = new byte [32]; byte [] tmp = Encoding.ASCII.GetBytes(url); md5.TransformBlock(tmp, 0, tmp.Length, tmp, 0); md5.TransformBlock(_copyright, 0, _copyright.Length, _copyright, 0); if (request_id > 0 && version_major == 3) { md5.TransformBlock(hashtable, hash_select * 32, 32, hashtable, hash_select * 32); tmp = Encoding.ASCII.GetBytes(request_id.ToString()); md5.TransformFinalBlock(tmp, 0, tmp.Length); } else { md5.TransformFinalBlock(hashtable, hash_select * 32, 32); } HashToString(md5.Hash, hash, 0); return(Encoding.ASCII.GetString(hash)); }
private static void TransformString( BrokenMD5 md5, string str, bool final ) { byte [] tmp = Encoding.ASCII.GetBytes ( str ); if ( final ) md5.TransformFinalBlock ( tmp, 0, tmp.Length ); else md5.TransformBlock ( tmp, 0, tmp.Length, tmp, 0 ); }