Python之sha256算法实现代码分享(含分布计算哈希值算法)

Python之sha256算法实现代码分享(含分布计算哈希值算法)

import os
import sys
import datetime
from collections import OrderedDict


from X_conversion import *

import hashlib

import base64
import binascii


def main(argv):

    xh = X_hash()
    xh.test()



def sha256_hash(data:str):
    # 创建SHA-256对象
    sha256 = hashlib.sha256()

    # 更新哈希对象的内容
    sha256.update(str2bytes(data))

    # 计算哈希值
    hash_value = sha256.hexdigest()

    return hash_value

def sha256_hash_step(data_s:list):
    sha256 = hashlib.sha256()
    # 逐块计算哈希值
    for data in data_s:
        sha256.update(str2bytes(data))
        
    # 返回整个文件的SHA256哈希值
    return sha256.hexdigest()

class X_hash(object):
    def __init__(self):
        self.version = 'V1.0.0'
        self.xc = X_conversion()

    def sha256_hash(self, data:str):
        # 创建SHA-256对象
        sha256 = hashlib.sha256()

        # 更新哈希对象的内容
        sha256.update(str2bytes(data))

        # 计算哈希值
        hash_value = sha256.hexdigest()

        return hash_value

    def sha256_hash_step(self, data_s:list):
        sha256 = hashlib.sha256()
        # 逐块计算哈希值
        for data in data_s:
            sha256.update(str2bytes(data))
            
        # 返回整个文件的SHA256哈希值
        return sha256.hexdigest()

    def test(self):
        print('X_hash test start ********************************************************')
        message = "Hello World!"
        message_s = ["Hello", " ", "World!"]

        # 使用sha256函数
        message_hash256_str = self.sha256_hash(message)
        message_hash256_bytes = str2bytes(message_hash256_str)
        # message_hash256_str = message_hash256_hex.decode()
        message_hash256_str_len = len(message_hash256_str)

        # 输出将会是一个长字符串,这就是'Hello World'的SHA256哈希值
        print('message_hash256_str: ', type(message_hash256_str),'@', message_hash256_str)
        # print('message_hash256_bytes: ', type(message_hash256_bytes),'@', message_hash256_bytes)
        print('message_hash256_str_len: ', type(message_hash256_str_len),'@', message_hash256_str_len)
        print('\n')

        # 使用sha256函数
        message_hash256_str = self.sha256_hash_step(message_s)
        message_hash256_bytes = str2bytes(message_hash256_str)
        # message_hash256_str = message_hash256_hex.decode()
        message_hash256_str_len = len(message_hash256_str)

        
        # 输出将会是一个长字符串,这就是'Hello World'的SHA256哈希值
        print('message_hash256_str: ', type(message_hash256_str),'@', message_hash256_str)
        # print('message_hash256_bytes: ', type(message_hash256_bytes),'@', message_hash256_bytes)
        print('message_hash256_str_len: ', type(message_hash256_str_len),'@', message_hash256_str_len)
        print('X_hash test end ********************************************************\n\n')


if __name__ == "__main__":
    main(sys.argv[1:])

《AUTOSAR谱系分解(ETAS工具链)》之总目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值