首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >找不到python crypto.sign,尽管它在模块中

找不到python crypto.sign,尽管它在模块中
EN

Stack Overflow用户
提问于 2014-08-12 07:37:46
回答 2查看 3.3K关注 0票数 1

我正在尝试使用一些google api示例代码,但它不起作用。诚然,我对python还是个新手,但我已经把它归结为这个简单的测试程序:

代码语言:javascript
运行
复制
#!/usr/bin/python

from OpenSSL import crypto

print crypto.sign('key', 'xyzzy', 'sha256')

这会导致:

代码语言:javascript
运行
复制
Traceback (most recent call last):
  File "./ot", line 5, in <module>
    print crypto.sign('key', 'xyzzy', 'sha256')
AttributeError: 'module' object has no attribute 'sign'

当我查看openssl crypto module (/usr/lib/python2.6/site-packages/OpenSSL/crypto.py)时,它确实定义了"sign“:

代码语言:javascript
运行
复制
def sign(self, pkey, digest):
    """
    Sign the certificate request using the supplied key and digest

所以我很困惑。据我所知,目前还没有其他版本

代码语言:javascript
运行
复制
pip show pyopenssl
---
Name: pyOpenSSL
Version: 0.14
Location: /usr/lib/python2.6/site-packages
Requires: cryptography, six

基于注释的扩展输出:

代码语言:javascript
运行
复制
openssl file:
/usr/lib64/python2.6/site-packages/OpenSSL/__init__.pyc

dir(crypto):
['Error', 'FILETYPE_ASN1', 'FILETYPE_PEM', 'FILETYPE_TEXT', 'NetscapeSPKI', 'NetscapeSPKIType', 'PKCS12', 'PKCS12Type', 'PKCS7Type', 'PKey', 'PKeyType', 'TYPE_DSA', 'TYPE_RSA', 'X509', 'X509Extension', 'X509ExtensionType', 'X509Name', 'X509NameType', 'X509Req', 'X509ReqType', 'X509StoreType', 'X509Type', 'X509_verify_cert_error_string', '_C_API', '__doc__', '__file__', '__name__', '__package__', '_exception_from_error_queue', 'dump_certificate', 'dump_certificate_request', 'dump_privatekey', 'load_certificate', 'load_certificate_request', 'load_pkcs12', 'load_pkcs7_data', 'load_privatekey']

crypto file
/usr/lib64/python2.6/site-packages/OpenSSL/crypto.so

crypto.sign:
Traceback (most recent call last):
  File "./ot", line 16, in <module>
print crypto.sign('key', 'xyzzy', 'sha256')
AttributeError: 'module' object has no attribute 'sign'
EN

回答 2

Stack Overflow用户

发布于 2014-08-13 01:15:26

我显然有一些冲突的安装-我删除了几个yum python-crypto包,然后pip卸载了openssl,而/usr/lib64/python2.6/site- packages /OpenSSL/ (包括crypto.so)中仍然有一些东西,所以我手动删除了那个目录,然后pip安装了pyopenssl,这就解决了问题。谢谢你的指点...

票数 2
EN

Stack Overflow用户

发布于 2017-07-19 23:56:59

对于不使用openssl的人来说,他们有这个问题(缺少签名方法),还有另一个解决方案。

检查代码顶部的导入部分,您需要具有以下导入:

代码语言:javascript
运行
复制
from Crypto.Signature import PKCS1_v1_5

而不是Crypto.Cipher实现:

代码语言:javascript
运行
复制
from Crypto.Cipher import PKCS1_v1_5

此类没有sign方法:https://www.dlitz.net/software/pycrypto/api/2.6/Crypto.Cipher.PKCS1_v1_5.PKCS115_Cipher-class.html

Crypto.Signature PKCS1_v1_5类具有sign方法:https://www.dlitz.net/software/pycrypto/api/2.6/Crypto.Signature.PKCS1_v1_5.PKCS115_SigScheme-class.html

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25254077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档