資源簡(jiǎn)介
Hash函數(shù)
代碼片段和文件信息
from??math?import?ceil
IV=“7380166f?4914b2b9?172442d7?da8a0600?a96f30bc?163138aa?e38dee4d?b0fb0e4e“
IV?=?int(IV.replace(“?“?““)?16)
a?=?[]
for?i?in?range(0?8):
????a.append(0)
????a[i]?=?(IV?>>?((7?-?i)?*?32))?&?0xFFFFFFFF
IV?=?a
def?out_hex(list1):
????for?i?in?list1:
????????print(“%08x“?%?i)
????print(“\n“)
def?rotate_left(a?k):
????k?=?k?%?32
????return?((a?<>?(32?-?k))
T_j?=?[]
for?i?in?range(0?16):
????T_j.append(0)
????T_j[i]?=?0x79cc4519
for?i?in?range(16?64):
????T_j.append(0)
????T_j[i]?=?0x7a879d8a
def?FF_j(X?Y?Z?j):
????if?0?<=?j?and?j?16:
????????ret?=?X?^?Y?^?Z
????elif?16?<=?j?and?j?64:
????????ret?=?(X?&?Y)?|?(X?&?Z)?|?(Y?&?Z)
????return?ret
def?GG_j(X?Y?Z?j):
????if?0?<=?j?and?j?16:
????????ret?=?X?^?Y?^?Z
????elif?16?<=?j?and?j?64:
????????#ret?=?(X?|?Y)?&?((2?**?32?-?1?-?X)?|?Z)
????????ret?=?(X?&?Y)?|?((~?X)?&?Z)
????return?ret
def?P_0(X):
????return?X?^?(rotate_left(X?9))?^?(rotate_left(X?17))
def?P_1(X):
????return?X?^?(rotate_left(X?15))?^?(rotate_left(X?23))
def?CF(V_i?B_i):
????W?=?[]
????for?i?in?range(16):
????????weight?=?0x1000000
????????data?=?0
????????for?k?in?range(i*4(i+1)*4):
????????????data?=?data?+?B_i[k]*weight
????????????weight?=?int(weight/0x100)
????????W.append(data)
????for?j?in?range(16?68):
????????W.append(0)
????????W[j]?=?P_1(W[j-16]?^?W[j-9]?^?(rotate_left(W[j-3]?15)))?^?(rotate_left(W[j-13]?7))?^?W[j-6]
????????str1?=?“%08x“?%?W[j]
????W_1?=?[]
????for?j?in?range(0?64):
????????W_1.append(0)
????????W_1[j]?=?W[j]?^?W[j+4]
????????str1?=?“%08x“?%?W_1[j]
????A?B?C?D?E?F?G?H?=?V_i
????“““
????print?“00“
????out_hex([A?B?C?D?E?F?G?H])
????“““
????for?j?in?range(0?64):
????????SS1?=?rotate_left(((rotate_left(A?12))?+?E?+?(rotate_left(T_j[j]?j)))?&?0xFFFFFFFF?7)
????????SS2?=?SS1?^?(rotate_left(A?12))
????????TT1?=?(FF_j(A?B?C?j)?+?D?+?SS2?+?W_1[j])?&?0xFFFFFFFF
????????TT2?=?(GG_j(E?F?G?j)?+?H?+?SS1?+?W[j])?&?0xFFFFFFFF
????????D?=?C
????????C?=?rotate_left(B?9)
????????B?=?A
????????A?=?TT1
????????H?=?G
????????G?=?rotate_left(F?19)
????????F?=?E
????????E?=?P_0(TT2)
????????A?=?A?&?0xFFFFFFFF
????????B?=?B?&?0xFFFFFFFF
????????C?=?C?&?0xFFFFFFFF
????????D?=?D?&?0xFFFFFFFF
????????E?=?E?&?0xFFFFFFFF
????????F?=?F?&?0xFFFFFFFF
????????G?=?G?&?0xFFFFFFFF
????????H?=?H?&?0xFFFFFFFF
????????“““
????????str1?=?“%02d“?%?j
????????if?str1[0]?==?“0“:
????????????str1?=?‘?‘?+?str1[1:]
????????print?str1
????????out_hex([A?B?C?D?E?F?G?H])
????????“““
????V_i_1?=?[]
????V_i_1.append(A?^?
評(píng)論
共有 條評(píng)論