问题标签 [pycrypto]

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 回答
5353 浏览

python - PyCrypto:生成受 DES3 密码保护的 RSA 密钥

我已经能够使用以下命令创建一个受密码保护的 RSA 密钥 DES3(嗯......我想是因为我对这个加密世界很陌生):

现在,如果可能,我想在 Python 脚本中使用 PyCrypto。我已经看到了这条消息,这似乎不鼓励使用 PyCrypto 来做到这一点。还是那样吗?

当然,我可以随时调用os.execute并执行上述命令,但我认为这是“作弊” :-)。我几乎这样做是为了学习 PyCrypto。

先感谢您。

0 投票
2 回答
2000 浏览

python - 在 Python 中加密数据 -

我正在编写一个客户端 - 服务器模型(客户端是服务器上的一个脚本,它收集数据并通过 REST 将其发送到服务器)并且想要加密发送的数据。

目前我有一个生成随机密钥的函数,它从特定时区添加时间 - IP-HOSTNAME-YEAR-MONTH-DAY-HOUR-(MINUTE/2)

密钥的每个部分通过 SHA256 运行 3,000 - 10,000 次,最后生成 128 位密钥。脚本总共需要大约 0.8 - 1 秒才能完成。

数据通过 AES 加密,使用部分 128 位密钥作为密钥和 iv。

服务器脚本,侦听任何连接,验证是否列出了 IP 地址,然后继续解密数据(使用相同的方法生成密钥和 iv )

我的问题是: - 我在重新发明轮子吗?- 是否有更好的做法来生成用于数据加密的动态、限时密钥?

我的目标是拥有一个限制为 60-120 秒的密钥,然后将其丢弃,使用多个周期来生成密钥(感谢阅读 Truecrypt 的 Python 方式),因此如果捕获到任何数据,它就不会被解密“容易地” 。此外,服务器模型将有一个 SSL 证书,它将用于加密加密。

我正在考虑为每个客户端脚本(生成 RSA)提供一个静态密钥,用于 AES 加密。

感谢您的诚实回答和任何改进这一点的新想法。

0 投票
3 回答
1891 浏览

python - PyCrypto:使用 RSA 非对称密钥对中文字符进行编码

我正在尝试使用 PyCrypto 加密/解密一些字符串,但我遇到了汉字问题。

当我尝试加密“ ni-hao ”时(你好)......

...我不断收到错误:

我尝试了很多组合,

没有任何运气。

我想我总是可以在编码之前尝试使用base64,但我想把它作为“最后的资源”......我希望有一种更“优雅”的方式来做到这一点。

有没有人遇到过同样的问题?任何提示将不胜感激。先感谢您。

0 投票
2 回答
1802 浏览

.net - .NET RSACryptoServiceProvider 中的 PyCrypto 签名消息和验证签名

我正在尝试创建一个签名验证系统,该系统使用我的网站,该网站在带有 PyCrypto 引擎的 Google API 上运行。生成签名的程序非常简单:

密钥“密钥”由以下方式提供:

签名以十六进制字符串形式返回,例如:“A12D.......”

.NET 程序是:

但它不起作用!为什么??

Pycrypto 和 .NET 接收相同的参数(模数、指数、d、p、q)

0 投票
3 回答
5926 浏览

python - PyCrypto:使用 RSA 和 PKCS#1 对字符串进行两次加密

大家好。

我想知道是否可以使用 PyCrypto进行双重RSA/PKCS#1加密。

我有一个服务器,它有自己的 RSA 密钥(openssl在安装所述服务器时使用命令生成)和一个可以请求服务器密钥的公共部分的客户端。此外,该客户端可以要求服务器为其生成另一个 RSA 密钥(或密钥对)。在这种情况下,服务器还保留私有(或“整个”RSA 密钥)并将其密钥的公共部分发送给客户端。

我一直在玩 RSA/PKCS 和 AES 加密。我创建了一个测试 Python 文件,它只使用一个 RSA 密钥就可以很好地加密。它所做的是使用对称 AES 系统(使用“即时”生成的随机密钥)加密数据,使用 RSA/PKCS#1 系统对用于 AES 的密码进行加密,并将其放入结果中发送:

如您所见,AES 密码是使用服务器的 RSA 密钥加密的。现在,我想更加偏执,并使用客户端的公钥加密已经加密的密码,因此“加密”方法将类似于:

但是当我尝试重新加密密钥时,我得到了一个ValueError("Plaintext too large")例外。这是有道理的(至少对于对加密一无所知的人来说是有道理的),因为 PKCS 添加了一个填充,所以当我thisMessagePassword用服务器的公钥加密“”时,我得到一个 256 字节的字符串,这对于第二个 PKCS 来说太长了加密器(我一直在做一些“手动测试”,限制似乎是 214 字节......我的意思是......这是最后一个不抛出异常的值)。

我知道这可能是一个奇怪的结构,使用服务器的公钥进行加密和使用客户端的密钥进行签名可能更有意义,但我只是想尝试一下加密的东西并尝试了解它们是如何进行的工作以及为什么。这就是为什么任何提示都会受到赞赏的原因。

先感谢您!

0 投票
1 回答
1480 浏览

python - Pycrypto 导入密钥

我遇到了 pycrypto 公钥加密的问题。当我有私钥时加密工作正常,但是当我只导入公钥加密失败时:

在 [85] 中:导入 Crypto.PublicKey.RSA

在 [86] 中:key = Crypto.PublicKey.RSA.importKey(open('/etc/pki/server.pub', 'r').read())

在 [87] 中:键。

在 [87] 中:key.encrypt('cheese', 32)

出[87]:('奶酪',)

最后我检查了它看起来没有加密。谁能帮我看看我在 pycrypto api 中缺少什么?

0 投票
2 回答
1117 浏览

c# - 尝试使用 Python 从工作 C# 代码生成 RSA 签名

我正在使用其他人的代码生成用于在 xbox 360 保存文件中进行验证的 RSA 签名。该代码从文件中读取所需的值并正确生成签名。

代码是:

我试图结束 中的内容xrsa,但使用 Python。我安装了 pycrypto,我正在查看文档,但我仍然缺少一些明显的东西。首先,来自 Crypto.PublicKey 的 RSA.construct 只需要六个参数,而不是指数一和二(DP 和 DQ)。此外,输入需要很长。在 C# 代码中,值是 128 和 64 字节长,而不是 4 字节长。

我知道这似乎很明显,但我不知道我需要做什么。

我正在使用 Python 2.7.3

编辑:另外,要加密的“消息”是文件的 0x118 字节的 sha1 哈希,其中包含元数据和文件其他部分的哈希。

编辑:非常感谢mata,我觉得我离让它工作更近了。它仍然与 C# 签名不匹配。在 C# 中,签名格式设置为 SHA1。这是在做什么,可以在 Python 中完成吗?

0 投票
1 回答
1556 浏览

python - PyCrypto 生成错误的签名

正如下面的代码所示,我在使用 PyCrypto 时遇到了重大问题。一个问题是测试用例不会以可重复的方式失败,而是在使用不同密钥的不同平台上具有不同的原因。

请注意,测试用例为 Alice 和 Bob 提供了两组密钥,第一组由 OpenSSL 生成,第二组由 PyCrypto 生成(取消注释“备用密钥”部分)。

测试用例是一个简单的往返:

  1. Alice 生成对称密钥并加密数据
  2. Alice 用 Bob 的公钥加密对称密钥,然后用她的私钥对加密的密钥进行签名(在这个简单的测试用例中不使用散列)。
  3. Bob 用 Alice 的公钥验证签名,并用他的私钥解密对称密钥。
  4. Bob 使用对称密钥解密数据。

以下是一些示例运行的结果:

在具有 OpenSSL 密钥的 Linux 上

在 Linux 上使用 PyCrypto 密钥

在具有 OpenSSL 密钥的 Windows 上

在带有 PyCrypto 密钥的 Windows 上

这是测试用例:

PyCrypto 似乎是这样一个篮子,有什么理由吗?

0 投票
1 回答
38158 浏览

python - 如何读取 PEM + PKCS#1 格式的 RSA 公钥

我有一个 PEM 格式的 RSA 公钥 + PKCS#1(我猜):

我想在 Python 中获取其 ASN1 编码版本的 SHA1 摘要。第一步应该是读取这个密钥,但是我在 PyCrypto 中没有做到这一点:

PyCrypto的文档说支持 PEM + PKCS#1,所以我很困惑。我也尝试过 M2Crypto,但事实证明 M2Crypto 不支持 PKCS#1,而只支持 X.509。

0 投票
1 回答
3178 浏览

python - 无法在 mac 上使用 easy_install 或 pip 安装

我正在尝试使用 easy_install (和 pip)安装 lxml 和 pycrypto 模块,但收到错误消息,例如

布拉布拉。. .

当我尝试安装 pycrypto 时,我也遇到了类似的语法错误。我尝试了这个答案,但徒劳无功。我尝试使用 setuptools-0.6c11-py2.6.egg 和 setuptools-0.6c11-py2.7.egg 设置 python 2.6 和 2.7 环境,但得到相同的输出。

我在网上搜索了很多,但找不到解决方案。

编辑:我在 macbook pro 2010 上使用 OSX 10.7,并安装了 XCode 4 和 3

在尝试上面链接中的命令时,我会将 args 替换为最新版本。

我在其他帖子上阅读并尝试了这个

解决方案:

正如@jdi 建议的那样,我做了以下事情

从链接安装 gcc ,因为我仍然面临建议的选项 1 和 2 的问题

那么,无论是这个

或者这个,会工作

同样适用于 pycrypto