Python加密模块 - valueerror:ED25519私钥为32字节长

发布于 2025-01-21 10:56:40 字数 1445 浏览 3 评论 0原文

我正在使用GO语言脚本来生成私钥和公共密钥。该算法使用ED25519。当我使用Python加密模块读取私钥时,我将收到以下错误。

>>> import cryptography.hazmat.primitives.asymmetric.ed25519 as ed25519
>>> pk = ed25519.Ed25519PrivateKey.from_private_bytes(open('private.key', 'rb').read())
>>> pk

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
/var/folders/yy/..../T/ipykernel_15095/3709883678.py in <module>
      1 import cryptography.hazmat.primitives.asymmetric.ed25519 as ed25519
      2 
----> 3 pk = ed25519.Ed25519PrivateKey.from_private_bytes(open('private.key', 'rb').read())
      4 
      5 pk

.../lib/python3.8/site-packages/cryptography/hazmat/primitives/asymmetric/ed25519.py in from_private_bytes(cls, data)
     67             )
     68 
---> 69         return backend.ed25519_load_private_bytes(data)
     70 
     71     @abc.abstractmethod

.../lib/python3.8/site-packages/cryptography/hazmat/backends/openssl/backend.py in ed25519_load_private_bytes(self, data)
   1858     def ed25519_load_private_bytes(self, data):
   1859         if len(data) != ed25519._ED25519_KEY_SIZE:
-> 1860             raise ValueError("An Ed25519 private key is 32 bytes long")
   1861 
   1862         utils._check_byteslike("data", data)

ValueError: An Ed25519 private key is 32 bytes long

I am using a GO Language script to generate private and public keys. This algorithm uses Ed25519. When I am reading the private keys using python crypto module I am receiving following error.

>>> import cryptography.hazmat.primitives.asymmetric.ed25519 as ed25519
>>> pk = ed25519.Ed25519PrivateKey.from_private_bytes(open('private.key', 'rb').read())
>>> pk

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
/var/folders/yy/..../T/ipykernel_15095/3709883678.py in <module>
      1 import cryptography.hazmat.primitives.asymmetric.ed25519 as ed25519
      2 
----> 3 pk = ed25519.Ed25519PrivateKey.from_private_bytes(open('private.key', 'rb').read())
      4 
      5 pk

.../lib/python3.8/site-packages/cryptography/hazmat/primitives/asymmetric/ed25519.py in from_private_bytes(cls, data)
     67             )
     68 
---> 69         return backend.ed25519_load_private_bytes(data)
     70 
     71     @abc.abstractmethod

.../lib/python3.8/site-packages/cryptography/hazmat/backends/openssl/backend.py in ed25519_load_private_bytes(self, data)
   1858     def ed25519_load_private_bytes(self, data):
   1859         if len(data) != ed25519._ED25519_KEY_SIZE:
-> 1860             raise ValueError("An Ed25519 private key is 32 bytes long")
   1861 
   1862         utils._check_byteslike("data", data)

ValueError: An Ed25519 private key is 32 bytes long

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

少女净妖师 2025-01-28 10:56:40

以下解决方案是根据我的预期产生结果

>>> import cryptography.hazmat.primitives.asymmetric.ed25519 as ed25519
>>> pk = ed25519.Ed25519PrivateKey.from_private_bytes(open('private.key', 'rb').read()[:32])
>>> pk

b'Yl0hNCRvnjlAavjfDTfsTKFGajh.......'

The following solution is generating results as expected for me

>>> import cryptography.hazmat.primitives.asymmetric.ed25519 as ed25519
>>> pk = ed25519.Ed25519PrivateKey.from_private_bytes(open('private.key', 'rb').read()[:32])
>>> pk

b'Yl0hNCRvnjlAavjfDTfsTKFGajh.......'
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文