1. A method for establishing a secure hash function for computing an output message digest from an input message, said method comprising the steps of: (a) Receiving an input message for obtaining a corresponding output message digest; (b) Determining the length of said output message digest; (c) Selecting a secure hash function in terms of said length of said output message digest; (d) Dividing said input message into blocks of pre-defined length; (e) Engaging a comparator means for comparing the size of said input message with said message digest length; (f) Engaging a padding means for performing a padding function of adding an initialization vector to said input message if said input message size is less than said message digest length, said padding function being performed to obtain a padded message divided into m-blocks, each of said m-blocks having size equal to the length of said message digest, (g) Engaging a hash computation means in Cipher Block Chaining (CBC) mode with iterative rounds containing message pre-processing processes of Shuffling said padded message to obtain a shuffled message, passing said shuffled message to a T-function to obtain a T-functioned message, and passing the T-functioned message to a Linear Feedback Shift Register to obtain a hash computed value; and (h) Outputting a hash output value of the message after a pre-determined number of iterative rounds of said hash computation, each followed by said message pre-processing.