python3 中 使用和solidity 中一样的keccak256算法 并且结果一致

news/2025/1/10 22:31:04/

环境 下载的python3.8
1、python依赖
pip install pycryptodome
+改lib下的 crypto为Crypto 解决
详细说明 改lib文件下的crpyto文件 把首字母大写
只需要安装这个依赖。 如果有安装其他包 可以卸载掉以免干扰
pip uninstall 包名 为卸载依赖
此处原文地址 见评论处 https://blog.csdn.net/DanielJackZ/article/details/104531615

2、代码

from Crypto.Hash import keccak
def keccakTest():keccak_hash = keccak.new(digest_bits=256)# keccak_hash.update(b'0')#044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d#keccak_hash.update(b'a') 3ac225168df54212a25c1c01fd35bebfea408fdac2e31ddd6f80a4bbf9a5f1cb#b'' 这个是字符转byte 的方法 因为hex 0 为不可见字符 所以我们没有办法通过字符转换a_bytes = bytes.fromhex('0000000000000000000000000000000000000000000000000000000000000001')# bytes.fromhex('61')等于 b'a'print(a_bytes)#打印为 b'a'keccak_hash.update(a_bytes)print(keccak_hash.hexdigest())

说明下 这个地方调试的原因是 solidity 在计算数组存储数据开始 的位置 会使用这个函数 在solidity中是

bytes32 kec=keccak256(bytes32(0))

所以 当使用python 来进行计算时 需要转换 bytes32(0) 是hex 格式的 (上面那一串) 这样才能保证算出的结果是一致的

在计算字符格式的参数 python使用b’’ 结果是solidity一致的

solidity代码 为 请注意 solidity 版本为^0.4.4 老版本可以穿字符串 新版只能是bytes32

 bytes32 kec=keccak256(a);

http://www.ppmy.cn/news/518240.html

相关文章

C#值传递与引用传递的区别

C#值传递与引用传递的区别 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 开发工具与关键技术:ntl 作者:王子锐 撰写时间:2022/5/28 (全部用字体大小10) 首先我们先了解什么是值…

算法(一):智能小车速度控制(PID模糊控制)

概览 一、前言二、基于PID 的速度控制1.PID控制器2.PID速度控制 二、基于模糊控制的速度控制1.变量的模糊化2.模糊查询表的计算3.模糊查询表设置车速 三、总结 一、前言 本科的时候参加飞思卡尔比赛,在队友的神助攻下有幸拿了国奖,比赛中使用了模糊控制…

数据库Db-主键的创建方式与删除方式

/* 主键:在一张表中唯一的确定一组数据,因此一张表只能有一个主键。 主键的约束字段默认具有unique约束,not null约束 构成主键的可以是一个字段,也可以是多个字段 */ CREATE DATABASE 数据库名-; CREATE TABLE 表名( kec_id INT PRIMARY KE…

MATLAB离线模糊控制表生成以及模糊控制程序编写

MATLAB离线模糊控制表生成步骤 第一步:MATLAB命令行中输入“fuzzy” 第二步:选择偏差隶属度函数、论域、范围、模糊变量等。 第三步:选择偏差变化率隶属度函数、论域、范围、模糊变量等。 第四步:选择输出隶属度函数、论域、范…

CKA,CKS题库kubernetes认证考试

今天一个同事通过了两个考试,就是看了这个题库。CKA,CKS,kubernetes认证考试完全分享,只需要注册用户就可以。都是考试实况哦,看着一套就够了。**Lalapodo**真的太给力了。通过考试不是唯一目的,lalapodo更有专业中文课程分享。ku…

CKA认证

rbac授权 设置配置环境: [studentnode-1] $ kubectl config use-context k8s Context 为部署管道创建一个新的ClusterRole并将其绑定到范围为特定的namespace 的特定 ServiceAccount . Task 创建一个名为 deployment-clusterrole 且仅允许创建以下资源类型的新ClusterRole : De…

KVC原理

描述 Key-value coding is a mechanism enabled by the NSKeyValueCoding informal protocol that objects adopt to provide indirect access to their properties. kvc 是由NSKeyValueCoding非正式协议采用的一种机制,对象通过该协议来提供属性的间接访问 执行结…

Keccak简介

一 什么是Keccak Keccak是一种被选定为SHA-3标准的单向散列函数算法。 Keccak可以生成任意长度的散列值,但为了配合SHA-2的散列值长度,SHA-3标准中规定了SHA3-224、SHA3-256、SHA3-384、SHA3-512这4种版本。在输入数据的长度上限方面,SHA-1…