[英]Load openssl Ed25519 private key in PEM format into Python ed25519.SigningKey
我有一些用openssl生成的密钥:
openssl genpkey -algorithm Ed25519 -out private_key.pem
我想用它们在Python中生成ed25519签名。 我找到了ed25519模块,但是找不到将如上所述生成的PEM文件加载到ed25519.SigningKey
。
我该怎么做?
https://pypi.org/project/ed25519/建议改用https://github.com/pyca/pynacl 。
参考: https : //pypi.org/project/ed25519/
不建议用于新应用程序:
使用pynacl代替对于新应用程序,我建议您使用[pynacl( https://github.com/pyca/pynacl )代替此存储库。 PyNaCl更大,并且构建时间更长(它包含完整的NaCl / libsodium库,而不仅仅是ed25519部分),但是它由勤奋而认真的PyCA团队很好地维护,而我却允许该存储库陷入困境。 PyNaCl的速度也快约10-20倍。
要使用ed25519创建签名,请参见https://pynacl.readthedocs.io/en/stable/signing/#example
签名者的观点(SigningKey)
import nacl.encoding
import nacl.signing
# Generate a new random signing key
signing_key = nacl.signing.SigningKey.generate()
# Sign a message with the signing key
signed = signing_key.sign(b"Attack at Dawn")
# Obtain the verify key for a given signing key
verify_key = signing_key.verify_key
# Serialize the verify key to send it to a third party
verify_key_hex = verify_key.encode(encoder=nacl.encoding.HexEncoder)
验证者的观点(VerifyKey)
import nacl.signing
# Create a VerifyKey object from a hex serialized public key
verify_key = nacl.signing.VerifyKey(verify_key_hex,
encoder=nacl.encoding.HexEncoder)
# Check the validity of a message's signature
# The message and the signature can either be passed separately or
# concatenated together. These are equivalent:
verify_key.verify(signed)
verify_key.verify(signed.message, signed.signature)
# Alter the signed message text
forged = signed[:-1] + bytes([int(signed[-1]) ^ 1])
# Will raise nacl.exceptions.BadSignatureError, since the signature check
# is failing
verify_key.verify(forged)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.