python 将哈希 sha256 短语传递给 curve25519

问题描述 投票:0回答:1

有以下任务:

秘密密码经过 SHA256 哈希处理以检索帐户的私钥

私钥使用Curve25519加密,获取账户的公钥

但是当我运行代码时出现错误: ValueError:X25519 私钥长度为 32 字节

这是可以理解的,因为 sha256 返回一个等于 64 位的字符串。请告诉我哪里错了

这是我正在尝试的代码:

> from cryptography.hazmat.primitives import hashes
> 
> from cryptography.hazmat.primitives.asymmetric.x25519 import X25519PrivateKey
> from hashlib import sha256
> 
> from cryptography.hazmat.primitives.kdf.hkdf import HKDF
> 
> #passphrase
> passphrase = "asdasfsdfsjddfueirgnuengigtnsenveigvuneirvneriuvniuvnrsbng"
> #hashing passphrase sha256
> passphrase_sha256 = sha256(passphrase.encode('utf-8')).hexdigest()
> 
> #I pass the hash to cruve25519
> private_key = X25519PrivateKey.from_private_bytes(passphrase_sha256)
> peer_public_key = X25519PrivateKey.from_private_bytes(passphrase_sha256).public_key()
python sha256 curve-25519 x25519
1个回答
0
投票

SHA-256 生成 64 个字符的十六进制字符串,但 X25519PrivateKey 期望输入是 32 字节的二进制字符串而不是十六进制字符串,这就是为什么您必须按照 @Topaco 的建议使用

bytes.fromhex()
:

passphrase_sha256_hex = sha256(passphrase.encode('utf-8')).hexdigest()
passphrase_sha256 = bytes.fromhex(passphrase_sha256_hex)
 .....
© www.soinside.com 2019 - 2024. All rights reserved.