问题标签 [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 回答
804 浏览

cryptography - Pycryptodome 中不正确的填充错误。在 CryptoJS 中加密

我使用以下内容在Javascript中加密

这就是我在 Python/Django/Pycryptodome 中解密的方式:

它仍然说

BLOCK_SIZE 为 16,Key 是使用 DH 算法生成的。


问题:

填充似乎不正确。我似乎在两边都使用了 SHA256 作为密钥。
双方的 IV 输出似乎都是正确的。
所以,我在这两种情况下都在使用相同的字符串。因为,填充通常发生在输入字符串上,所以我已经解密并尝试在 Python 中取消填充,这表明填充不正确。


尝试以下评论: 1. IV 未在 python 代码中传递。
结果没有改变

  1. 你确定钥匙是一样的吗?分别在 JS 和 Python 中使用console.log(secret_key.toString())和。print("Sha256 of the key: ",sha256_key.digest())两者都不一样。为什么会这样?对于相同的输入,哈希不应该相同吗?
0 投票
0 回答
5492 浏览

python - RSA在python中使用私钥对字符串进行签名

我正在与我们的客户服务器通信。对于 api,我需要用我的私钥签署一个字符串。他们有以下条件要遵循

  1. 使用 SHA 256 算法计算字符串的哈希值
  2. 使用私钥和 RSA (PKCS1_PADDING) 算法对哈希值进行签名。
  3. Base64 编码加密的哈希值

我正在关注

在这里,我得到一个字符串作为结果。但在服务器端,我的签名不匹配。

我有什么问题吗?谁可以帮我这个事 ?

0 投票
2 回答
581 浏览

python - Python RSA 使用 NONEWithRSA 对字符串进行签名

我正在开发一个客户端代码在 Java 中的项目,他们正在使用NONEWithRSA算法来签名和验证字符串。

我正在使用PyCryptodome为给定的字符串生成符号。https://pycryptodome.readthedocs.io/en/latest/src/signature/pkcs1_v1_5.html

但我还没有发现它使用NONEWithRSA算法,因此它给出的签名与我的客户在服务器上的期望不同。

python上的任何库都支持这个算法吗?

0 投票
1 回答
272 浏览

python - 无法正确加密python3中的数据

嗨我已经用pycrypto在python2中编写了一个代码来加密和解密字符串这是代码

我正在尝试在 python3 中迁移解决方案

这是我所做的更改

但我面临的问题是加密字符串对于两者都不相同

相同的文字

python3 --> 39c457ed7a0b6c61b936d538f9cd7815b48e674ead3cb810f20f57899c4a1b980d3206e421f045758a5ef07efd35e55f

python3-> 6055565cab3ae7229c8148d32d4f3397477b9cdf6b91252900c95d7509e52e80f6f42227d9b111176f6b662113900fb7

我该如何解决?

0 投票
1 回答
587 浏览

python - PyCryptoDome/密码不等式与python中的AES-CFB

在运行测试以确保两个不同的库提供相同的输出时,我发现它们与CFB. 复制问题的代码是:

任何帮助解决这个问题都会受到赞赏。

此代码适用于modes.OFB(IV)AES.MODE_OFB

0 投票
0 回答
5180 浏览

python-3.x - python (pycryptodome) 中的 AES 解密给出“数据必须在 CBC 模式下填充到 16 字节边界”

我已经使用 AES 在 C# 中解密了字符串“12345678901234567890123456789012”

该字符串为 32 个字节,生成的“数组”(参见代码)长度为 48,因此两者都是 16 的偶数倍。

关键是“b14ca5898a4e4133bbce2ea2315a1916”

我试图在我的 python 代码中解密它

当我尝试解密它时 (cipher.decrypt(...) 我收到错误消息:

“在 CBC 模式下,数据必须填充到 16 字节边界”。

我已经读过数据必须是 16 倍数,但我不清楚哪些数据需要是 16 倍数。

我已将生成的(base64 编码的)加密字符串粘贴到该网站中(无 IV、256 位、CBC 模式,请参见上面的密钥),并且效果很好。

所以为了简短起见,我做错了什么?

0 投票
0 回答
542 浏览

python - 解密 RSA 会话密钥的正确方法

我正在使用 pycryptodomex 进行 RSA 加密、解密。 我关注这篇文章

它显示以下错误

ValueError Traceback (most recent call last) in 11 # 用公钥解密会话密钥 12 cipher_rsa = PKCS1_OAEP.new(private_key) ---> 13 session_key = cipher_rsa.decrypt(enc_session_key) 14 15 # 用公钥解密数据AES 会话密钥

C:\ProgramData\Anaconda3\lib\site-packages\Cryptodome\Cipher\PKCS1_OAEP.py in decrypt(self, ciphertext) 165 # Step 1b and 1c 166 if len(ciphertext) != k or k 167 raise ValueError("Ciphertext长度不正确。") 168 # 步骤 2a (O2SIP) 169 ct_int = bytes_to_long(ciphertext)

ValueError:长度不正确的密文。

代码有什么问题吗?

0 投票
1 回答
56 浏览

python - 在 PyCrypto 中重新创建一个 openssl 解密命令

我正在尝试在 PyCrypto 中重新创建第二个命令(解密)

的内容test.txtflag{flagflag}。加密的输出是0KSF5koIceXxszsgzpl4uA==

binascii.a2b_base64(b'0KSF5koIceXxszsgzpl4uA==')openssl enc -aes-128-ecb -nosalt -pass pass:abcde -md sha256 -in test.txt -out out.txt产生与(no )相同的字节数组-base64,所以我知道 base64 解码应该是第一步。

key与以下输出匹配,所以我知道密钥生成代码是正确的:

但是,将所有这些放在一起会在msg. 任何我弄错的地方都将不胜感激。

0 投票
0 回答
1172 浏览

python - 如何使用 pycryptodome 在 python 中加密 PDF

我正在尝试使用PyCryptodome加密 PDF 文件并将系统的一些唯一 ID 作为关键参数。即 uuid 等。我想将AES 加密与 GCM 模式一起使用,因为 GCM 模式是一种Authentic Encryption,因为它返回一个用于身份验证的 MAC。我有以下烦恼:

  1. 我用谷歌搜索了很多,但找不到加密文件的代码。每个人都在加密字符串。
  2. 我想将 GCM 模式与 AES 一起使用,因此,需要一个使用 GCM 模式的示例。
  3. 在下面给出的示例中,加密后的代码将附加iv(初始化向量)与加密文本并在解密时使用它。所以我的问题是,我将如何在加密文件时完成此操作。
  4. 我不知道如何在解密文件时使用 MAC 真实性检查。

这就是我现在拥有的,不幸的是,它也在加密字符串:

0 投票
1 回答
327 浏览

cryptography - 在 python 3.6 中使用 pycryptodome 或密码学。如何做到这一点?

想象以下消息:

“这是给签名者的消息”

我需要使用 Python 3.6 中的“pycryptodome”或“cryptography”使用以下标准对该示例消息进行签名:

  • 格式:x.509;
  • 字符集:UTF-8;
  • 编码:Base64;
  • PKCS1 v1.5;
  • 大小:1024位;
  • 消息格式:SHA-1;

我有所需的“privatekey.pem”,但我不知道如何在 pycryptodome 或密码学中做到这一点。

更新:我找到了这个示例代码,但仍然不知道它是否是根据原始消息中定义的标准实现我需要的正确方法。示例代码(用于 pycryptodome):

我可以看到我得到了一个 172 个字符的签名哈希,但需要专业的建议才能知道这是否符合我描述的标准,以及它是否是正确的做法。