用于处理用于存储以太坊私钥的加密密钥文件的库。

eth-keyfile的Python项目详细描述


用于处理用于存储以太坊的加密密钥文件的库 私钥

This library and repository was previously located at https://github.com/pipermerriam/ethereum-keyfile. It was transferred to the Ethereum foundation github in November 2017 and renamed to ^{tt1}$. The PyPi package was also renamed from ^{tt2}$ to `eth-keyfile.

安装

pip install eth-keyfile

开发

pip install -e . -r requirements-dev.txt

运行测试

您可以使用以下命令运行测试:

py.test tests

或者您可以安装tox来运行完整的测试套件。

释放

要将降价自述转换为正确的 在pypi上正确呈现的格式。

对于类似Debian的系统:

apt install pandoc

或在OSX上:

brew install pandoc

发布新版本:

make release bump=$$VERSION_PART_TO_BUMP$$

如何颠簸

此repo的版本格式为 稳定,{major}.{minor}.{patch}-{stage}.{devnum}表示不稳定 (stage可以是alpha或beta)。

若要在行中发布下一个版本,请指定要凹凸的部分,如 make release bump=minormake release bump=devnum

如果您是beta版本,make release bump=stage将切换到 马厩。

若要在当前版本稳定时发布不稳定版本,请指定 新版本显式地 make release bump="--new-version2.0.0-alpha.1 devnum"

文档

eth_keyfile.load_keyfile(path_or_file_obj) --> keyfile_json

接受表示为字符串或文件对象的文件系统路径 并将解析后的密钥文件json作为python字典返回。

>>>frometh_keyfileimportload_keyfile>>>load_keyfile('path/to-my-keystore/keystore.json'){"crypto":{"cipher":"aes-128-ctr","cipherparams":{"iv":"6087dab2f9fdbbfaddc31a909735c1e6"},"ciphertext":"5318b4d5bcd28de64ee5559e671353e16f075ecae9f99c7a79a38af5f869aa46","kdf":"pbkdf2","kdfparams":{"c":262144,"dklen":32,"prf":"hmac-sha256","salt":"ae3cd4e7013836a3df6bd7241b12db061dbe2c6785853cce422d148a624ce0bd"},"mac":"517ead924a9d0dc3124507e3393d175ce3ff7c1e96529c6c555ce9e51205e9b2"},"id":"3198bc9c-6672-5ab3-d995-4942343ae5b6","version":3}

eth_keyfile.create_keyfile_json(private_key, password, kdf="pbkdf2", work_factor=None) --> keyfile_json

采用以下参数:

  • private_key:长度为32的bytestring
  • password:一个bytestring,它将是 用于解密生成的密钥文件。
  • kdf:密钥派生函数。允许的值是pbkdf2scrypt。默认情况下,将使用pbkdf2
  • work_factor:将用于给定密钥的工作因子 求导函数。默认情况下,1000000将用于 pbkdf2262144用于scrypt

将keyfile json作为python字典返回。

>>>private_key=b'\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01'>>>create_keyfile_json(private_key,b'foo'){"address":"1a642f0e3c3af545e7acbd38b07251b3990914f1","crypto":{"cipher":"aes-128-ctr","cipherparams":{"iv":"6087dab2f9fdbbfaddc31a909735c1e6"},"ciphertext":"5318b4d5bcd28de64ee5559e671353e16f075ecae9f99c7a79a38af5f869aa46","kdf":"pbkdf2","kdfparams":{"c":262144,"dklen":32,"prf":"hmac-sha256","salt":"ae3cd4e7013836a3df6bd7241b12db061dbe2c6785853cce422d148a624ce0bd"},"mac":"517ead924a9d0dc3124507e3393d175ce3ff7c1e96529c6c555ce9e51205e9b2"},"id":"3198bc9c-6672-5ab3-d995-4942343ae5b6","version":3}

eth_keyfile.decode_keyfile_json(keyfile_json, password) --> private_key

将keyfile json作为python字典,并将 密钥文件,返回解码的私钥。

>>>keyfile_json={..."crypto":{..."cipher":"aes-128-ctr",..."cipherparams":{..."iv":"6087dab2f9fdbbfaddc31a909735c1e6"...},..."ciphertext":"5318b4d5bcd28de64ee5559e671353e16f075ecae9f99c7a79a38af5f869aa46",..."kdf":"pbkdf2",..."kdfparams":{..."c":262144,..."dklen":32,..."prf":"hmac-sha256",..."salt":"ae3cd4e7013836a3df6bd7241b12db061dbe2c6785853cce422d148a624ce0bd"...},..."mac":"517ead924a9d0dc3124507e3393d175ce3ff7c1e96529c6c555ce9e51205e9b2"...},..."id":"3198bc9c-6672-5ab3-d995-4942343ae5b6",..."version":3...}>>>decode_keyfile_json(keyfile_json,b'foo')b'\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01'

eth_keyfile.extract_key_from_keyfile(path_or_file_obj, password) --> private_key

采用由字符串或文件对象表示的文件系统路径, 密钥文件的密码。将私钥作为bytestring返回。

>>>extract_key_from_keyfile('path/to-my-keystore/keyfile.json',b'foo')b'\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01'

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java JPA。Eclipselink没有为mySQL提供密码,但它应该提供   我的Servlet和@FormDataParam存在java问题   java将什么作为上下文参数传递到文件I/O方法中?   如果两个值相同,java无法找到其中一个单选按钮   java在变量和方法名中使用下划线   JavaSpringMVC单线程安全?   klazz类的java Arraylist(反射Api)   java如何在数字字符串中查找最频繁的数字?   JavaAPI设计:使数据更易于阅读与强制更多API调用   JavaHadoopMapReduceforGoogleWebGraph   java无法启动gauge API:Runner意外退出   java如何在bluemix上使用ibm工作负载调度器?   拉取一年中某一周特定日期的所有日期   java为什么是我的角节点。js应用程序将图像上传到S3� 邮递员正确上传时的符号?   在不使用任何第三方jar的情况下将文件从本地传输到linux系统(java代码)   java将现有文件夹复制到Eclipse工作区中新创建的项目中   Java中的regex RegExp帮助   当使用“系统”外观时,Java组合框setSelectedItem会出现故障   JavaASM:在类的方法中获取局部变量名和值