def hash_msg()

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