问题标签 [m2crypto]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1673 浏览

security - 在 web2py 中加密存储数据的最佳方法是什么?

我需要加密存储在 web2py 中的数据,更准确地说是密码。

这不是关于身份验证,而是更多类似于 KeePass 的应用程序。

我已经看到它包含在 web2py 中,但是M2Secret可以很容易地做到这一点。使用 M2Secret 我可以使用它:

但是我必须在我的设备中包含 M2Crypto 库。

有没有办法使用 web2py 中已经包含的 PyMe 来做到这一点?

0 投票
1 回答
255 浏览

python - 未找到符号:_PEM_read_bio_EC_PUBKEY 在针对 openssl 0.9.8x 或 1.0.0x 编译时导入 M2Crypto-0.20.2

在 MAC OS X 10.4.11 上针对最近的 openssl 版本(0.9.8x 或更高版本)编译 M2Crypto 时,在 python 2.6.5 上导入 M2Crypto 版本 0.20.2 失败:

即使编译适用于这些 openssl 版本,M2Crypto 也无法导入,因为缺少符号:_PEM_read_bio_EC_PUBKEY

Python 2.6.5 (r265:79359, Mar 24 2010, 01:32:55) [GCC 4.0.1 (Apple Inc. build 5493)] on darwin 输入“帮助”、“版权”、“信用”或“许可证”了解更多信息。

import M2Crypto Traceback(最近一次调用最后一次):文件“”,第 1 行,在文件“M2Crypto/ init .py”中,第 22 行,在 import _ m2crypto ImportError: dlopen(M2Crypto/ _m2crypto.so, 2): Symbol not found : _PEM_read_bio_EC_PUBKEY 引用自:M2Crypto/__m2crypto.so 预期于:动态查找

如果我针对 openssl 版本 0.9.7l 或 0.9.7m 编译 M2Crypto,它工作得很好。

有什么建议吗?

0 投票
1 回答
1217 浏览

python - Python M2crypto 错误

我正在尝试crda在跨平台(ARM)上构建代理模块。为了构建相同的,输入模块之一是m2crypto共享目标文件。我已经成功交叉编译并m2crypto.so生成了文件。

当我给出make命令时,python 脚本在内部被调用,它应该将m2crypto.so模块作为输入并应该生成 openssl(RSA) 密钥。

我面临的问题是 python 脚本无法从__m2crypto.so文件中导入任何模块。我正在使用 python 2.4 版本。我得到的错误是

其中,当我m2crypto为主机(x86 平台)编译并尝试为其构建时crda,python 能够导入m2crypto.so文件。

关于如何在不同平台(ARM)上成功构建它的任何建议。

提前致谢, Rams ch

0 投票
5 回答
16420 浏览

python - 在 CentOS 上安装 M2Crypto

我正在尝试通过从源代码编译在 CentOS 上安装 M2Crypto。我正在做一个 python setup.py build 但我收到以下错误,

请指教 ...

普拉萨纳

0 投票
3 回答
20861 浏览

python - 如何在 python 中验证 SSL 证书?

我需要验证证书是否由我的自定义 CA 签名。使用 OpenSSL 命令行实用程序很容易做到这一点:

但是我需要在 Python 中做同样的事情,而且我真的不想调用命令行实用程序。据我所知,M2Crypto 是 OpenSSL 的“最完整”的 python 包装器,但我不知道如何完成命令行实用程序的功能!

参考这个问题以了解如何在 C 代码中完成相同的任务,我已经完成了大约一半。 我选择的变量名称与 openssl verify 命令行实用程序的源代码中使用的变量名称相同,请参阅openssl-xxx/apps/verify.c.

所以我已经完成了一半,但我似乎无法真正完成验证!我错过了什么吗?我应该从 M2Crypto 使用其他功能吗?我应该寻找一个完全不同的 OpenSSL python 包装器吗?我怎样才能在 python 中完成这个任务!?!?

请注意,我使用证书来加密/解密文件,所以我对使用基于 SSL 连接的对等证书验证(已经回答)不感兴趣,因为我没有任何 SSL 连接。

0 投票
2 回答
932 浏览

python - 在 M2Crypto 中访问 CSR 扩展堆栈

我有一个添加了扩展堆栈的证书签名请求。根据此请求构建证书时,我希望能够访问该堆栈以用于创建最终证书。

然而,虽然M2Crypto.X509.X509有许多用于访问扩展的助手(get_extget_ext_at),M2Crypto.X509.Request但似乎只提供了一个用于添加扩展的成员,但无法检查已经与给定对象关联的扩展。

我在这里错过了什么吗?

0 投票
1 回答
1061 浏览

python - 将 OpenSSL 与 M2Crypto 静态链接

M2Crypto使用标准

构建和安装模块的步骤。distutils/setuptools 允许进行一些调整,但我似乎找不到将 OpenSSL 静态链接到模块的方法 - 似乎没有任何工具可以进行此更改。

有什么方法可以使用静态链接的 OpenSSL 构建 M2Crypto?(setup.py如果这是唯一的方法,我愿意放弃并手工完成,只是想在我去之前询问是否有人解决了这个问题并花费数小时解决已经解决的问题)。

0 投票
1 回答
620 浏览

python - SWIG 构建调试工具/提示

我正在尝试使用OpenSSL 1.0.0c(或 0.9.7m)在 Windows 上为 Python 2.5.4构建M2Crypto 0.21.1,但SWIG正在密谋反对我。我已经尝试了 SWIG 2.0.1 和 SWIG 1.3.40,我得到了同样的错误:

OpenSSL/SWIG 的所有排列都显示此错误。我尝试过手动调用 swig 并传递所有我可以的“额外详细”选项,但它们都没有接近信息。我还能做些什么来尝试找到这个问题的真正根源?

(此站点上有建议编辑 M2Crypto 的 .i 文件,但 0.21.1 已经集成了建议的更改)

0 投票
1 回答
2949 浏览

openssl - 使用crypto++验证openssl生成的数据签名

我有一个服务器,在 python 下运行,使用 m2crypto 签署消息 sha256 摘要我使用由 openssl CLI 生成的公共和私有 RSA 密钥。在服务器端,一切都可以
Python 代码:

privateKey = M2Crypto.RSA.load_key(sys.argv[2])
signedDigest = privateKey.sign(digest, 'sha256')

我仔细检查签名是否正确:

pubKey = M2Crypto.RSA.load_pub_key("key.pub.pem")
if pubKey.verify(digest, signedDigest, 'sha256') (等等....)

我将签名的 sha256 摘要存储在一个文件中,并将其与原始消息一起发送给客户端。
在客户端,在 c++ vc6 下运行,我加载签名的 sha256 摘要(作为二进制文件)和签名的消息。现在的目的是验证消息以及签名的 sha256。我有cryptopp作为静态链接,我知道它工作正常,因为我可以计算sha256,并与来自python的sha256进行比较,结果相同。这是代码:

RSA::PublicKey 公钥;
pubKey.Load(FileSource(LicenseControl::pubKeyPath, true));
RASS< PKCS1v15, SHA >::Verifier 验证者(pubKey);
//shaDigest是新计算的sha256,signatureByte是从服务器接收到的消息的签名
result = verifier.VerifyMessage( shaDigest, CryptoPP::SHA256::DIGESTSIZE, signatureByte, 512);

这会编译并运行,但总是返回 false。为确保签名有效,我直接使用 openssl CLI(而不是通过 m2crypto python 包装器)对其进行了验证:

openssl dgst -sha256 -verify key.pub.pem -signature sign original_file
验证OK

这确认签名的 sha256 摘要是可以的,并且它可以用于使用公钥成功验证消息。我知道 DER 和 PEM 格式(将 PEM 用于 openssl,DER 用于 cryptopp)。所以我相信公钥是正确的。现在我的问题是如何使用cryptopp库来验证签名???我已经通过了文档,但是经过几天的处理,它对我来说仍然看起来像中文。我试过像

RASS< PSSR, SHA >::Verifier 验证者(pubKey);

使用 PSSR 在 python 代码中加密,但没有运气......我现在考虑只用公钥解密签名的 sha256 摘要并将其与从接收文件计算的新 sha256 摘要进行比较。但即使这么简单,我也没有在文档中找到......知道如何正确使用验证器吗?
如何使用公钥解密?以防上一个问题无法解决

0 投票
0 回答
671 浏览

python - 如何生成强大的一次性会话密钥以与 AES 一起使用

我正在使用 M2Crypto 的 AES 加密消息,但对如何生成随机会话密钥和长度感到困惑。M2crypto 是否提供任何生成随机密钥的功能?