in signature/python/alibabacloud_darabonba_signature_util/sm3.py [0:0]
def hash_msg(msg):
len1 = len(msg)
reserve1 = len1 % 64
msg.append(0x80)
reserve1 = reserve1 + 1
# 56-64, add 64 byte
range_end = 56
if reserve1 > range_end:
range_end = range_end + 64
for i in range(reserve1, range_end):
msg.append(0x00)
bit_length = (len1) * 8
bit_length_str = [bit_length % 0x100]
for i in range(7):
bit_length = int(bit_length / 0x100)
bit_length_str.append(bit_length % 0x100)
for i in range(8):
msg.append(bit_length_str[7 - i])
group_count = round(len(msg) / 64)
b = []
for i in range(0, group_count):
b.append(msg[i * 64:(i + 1) * 64])
v = [IV]
for i in range(0, group_count):
v.append(CF(v[i], b[i]))
y = v[i + 1]
result = ""
for i in y:
result = '%s%08x' % (result, i)
return result