Differential Cryptanalysis on Hash Functions:Theory and Practice