问题标签 [pycryptodome]

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 投票
0 回答
280 浏览

python - 如何在 pycryptodome 中为 chacha20-poly1305 设置块计数器

我目前正在尝试解密使用 chacha20-poly1305 加密的 OpenSSH 数据包。到目前为止,我可以解密数据包长度并检查 MAC(我使用的是 pycryptodome),但是当我尝试解密有效负载时,它只会返回乱码输出。

我正在使用以下方法解密长度:

而 seqnr 是数据包序列号,key1_hex 是加密密钥第二部分的十六进制表示,cipher[:8] 是数据包的前 4 个字节。
这很好用!

现在我继续使用加密密钥的第一部分解密相同的 nonce 和有效负载:

在此https://github.com/openssh/openssh-portable/blob/master/PROTOCOL.chacha20poly1305文档之后,openssh github 站点告诉我,我必须使用块计数器 1 来解密有效负载。但是在https://pycryptodome.readthedocs.io/en/latest/src/cipher/chacha20_poly1305.html#chacha20-poly1305的文档中,似乎没有定义块计数器编号的选项(似乎它开始默认为 0,因为标签的验证对我有用)。
这是真的?还是我错过了什么?直到现在它都不起作用,我很确定这一定是因为块计数器的错误开始。

编辑:解决方案是在解密之前调用 cipher_chacha.seek(64) !然后它将从块计数器 1 开始!

0 投票
0 回答
432 浏览

python - 如何使用 django 和 pycrpytodome 加密并将数据存储到数据库中?

我使用 django 创建了一个数据库,并创建了一个 html 表单来将数据存储到数据库中。现在,我想使用 pycryptodome 加密并将密文存储到数据库中。当我显示来自数据库的数据时,我想要解密的明文。

我从 pycrytodome 文档中尝试了一些基本的加密示例和算法。现在,我想加密密文并将其存储到数据库中。

我想加密使用 html 表单输入数据库的明文,并且我想将密文存储到数据库中。我需要这方面的帮助。

0 投票
1 回答
173 浏览

python - 尝试使用 setup.py 安装 Cryptodome 时出现错误消息

我正在 Windows 7 64 位机器上设置 python 的密码器。我正在使用 setup.py 模块来实现这一点。我使用 setup.py 而不是 pip 的原因是因为我正在安装它的机器没有外部互联网访问权限,因此 pip 将无法工作。

我已经使用 Windows SDK 安装了 64 位 c++ 编译器,并按照以下链接中的说明在 cmd 行上运行了以下命令。

  • 列表项 cd "C:\Program Files\Microsoft SDKs\Windows\v7.1"
  • 列表项 cmd /V:ON /K Bin\SetEnv.Cmd /x64 /release
  • 列表项设置 DISTUTILS_USE_SDK=1

当我运行 setup.py 时,我收到以下错误消息:

这是看起来与错误相关的代码:

这可能是由于环境变量中的一些缺失值造成的吗?如果是这样,那些山谷应该是什么?

0 投票
0 回答
333 浏览

snmp - 在 python v3 虚拟环境中使用 pysnmp 的 SNMP V3 使用“加密服务不可用”错误

我正在尝试将 pysnmp 库与 SNMP V3 设置与 MD5 Auth 协议和 AesCfb128 Priv 协议一起使用,以从交换机获取详细信息。我正在尝试两件事。

1.在base机器上安装pysnmp和所有依赖包(包括pycrytpto)

2.为python3创建虚拟环境,并在这个虚拟环境中安装pysnmp和所有依赖包(包括pycrytpto)。

当我采用第一种方法时,可以正确检索详细信息。但是当我尝试第二种方法时,我收到“加密服务不可用”错误。我检查了两者的已安装软件包列表几乎相同。

下面是基本机器的详细信息

我的虚拟环境是在“/Users//Test/Python/Pysnmp”位置创建的

这是我尝试使用的命令

当我在基本机器(如)中运行上述代码时python3 script.py,它会正确返回详细信息。

但是当我使用安装在虚拟环境中的python(如/Users/<user_name>/Test/Python/Pysnmp/bin/python3 script.py)运行它时,它会返回“ Ciphering services not available ”作为错误指示。

我错过了什么???

谢谢

0 投票
1 回答
214 浏览

python - AES 加密问题(特别是使用 CryptoSwift 加密和使用 PyCryptodome 解密)

我目前正在尝试使用 AES 加密来加密和解密一个长度始终为 9 个字符的字符串。我要做的是快速加密字符串,然后在 python 中解密该加密字符串。我使用 AES 加密和 CryptoSwift 并使用 PyCryptodome 解密。

这就是我在 swift 中的功能:

我从运行 crypto_testing 函数得到的结果是:

此外,这就是我的解密函数在 python 中的样子:

将加密消息插入解密函数的结果如下:

如果有人对这里出了什么问题有任何线索,那将是一个很大的帮助。

0 投票
1 回答
78 浏览

python - 无法使用 Python 中的密钥解密文件

我有一个正在尝试解密的视频文件。密钥存储在文件中。由于某些原因,它不起作用并给我这个错误"TypeError: Object type <class 'str'> cannot be passed to C code"

我写的 DecryptFile 函数需要 3 个参数

  • 输入文件名(“input.ts”)
  • 输出文件名(“output.ts”)
  • 解密密钥(“k.kjs”)。

我想要它做的是使用提供的密钥解密文件并使用我给出的输出名称保存它。我正在使用 Python 3.7.1

0 投票
0 回答
1042 浏览

python - pycryptodome 和密码学之间的不同 RSA 签名

当我在 python 中尝试一些加密库 rsa 签名时,我注意到在pycryptodome和之间生成的签名cryptography是不同的。这是我的代码:

pycryptodome

cryptography

结果(见signature变量内容):

pycryptodome
密码学

但是,我的项目的正确结果是cryptography一个,但我的问题是为什么它们不同?我在使用非等效代码吗?

谢谢。

0 投票
1 回答
70 浏览

python-3.x - Pycryptodome Python3 RSA.importKey 阻塞/挂起

我正在使用最新版本的 Pycryptodome 运行 Python 3.5.2。

使用导入我的 RSA 私钥时RSA.importKey,会出现无限挂起或阻塞。我试图通过 lib 并找不到任何原因。

私钥是 PEM 格式的 RSA 私钥。即我正在传递密钥的字节数组。

我没有例外,只是让消息签名变得不可能。有没有其他人遇到过类似问题的解决方案?如果它有帮助,这是在 Linux 上运行的。

0 投票
1 回答
2252 浏览

python - 如何修复 Crypto.Signature.DSS 的 Python 导入错误

我正在尝试运行 DSA 的pycryptodome 示例。这是示例代码:

但我正面临ImportErrorDSS。这是错误输出:

我的开发环境包括:

  • Ubuntu 18.04.3 LTS
  • Python 3.6.8
  • PyCharm IDE 2019.2
  • 使用venvPython 虚拟环境
  • pip list命令显示:

现在如何修复 DSS 的导入错误?

0 投票
1 回答
537 浏览

javascript - 在 WEB Crypto API 中验证 pycryptodome 创建的数字签名

我正在使用 RSA 签署 SHA512 哈希并将其保存到文件中。python和javascript上的哈希值相同,但无法验证签名。Python代码:

JavaScript:

我尝试了不同的方法将 base64 签名转换为 ArrayBuffer 以在 Web Crypto API 中使用:rfc4648.js、new TextEncoder()、自定义转换为 Uint8Array,但结果总是错误的。我也尝试使用伪造(https://github.com/digitalbazaar/forge)验证签名,但结果也是错误的。

我哪里错了?我试图比较哈希的字节值,它用于签名函数的输入,但实际上它是 python 上的 Crypto.Hash 对象。