繁体   English   中英

将PEM格式的openssl Ed25519私钥加载到Python ed25519中。

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM