RSA密码协议不兼容 - Python脚本无法解密由Bash脚本加密的密钥

2024-04-29 05:00:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我编写了一个实现加密和解密的python脚本。为了将加密数据的密钥发送给接收方,程序对随机生成的密钥使用RSA公钥加密和解密。在

下面是python脚本中的加密和解密方法,我使用python脚本对公钥/私钥进行加密和解密:

from Crypto.Cipher import PKCS1_OAEP

def encrypt_public_key(msg, public_key):
    cipher = PKCS1_OAEP.new(public_key)
    return cipher.encrypt(msg)

def decrypt_private_key(msg, private_key):
    cipher = PKCS1_OAEP.new(private_key)
    return cipher.decrypt(msg)

不过,用bash这个程序来加密和解密的人应该用这个程序来和同学交流:

^{pr2}$

当我的程序试图解密我的同学加密密钥时,我得到了这个错误:

File "[script-path]", line 54, in decrypt_private_key
return cipher.decrypt(msg)
File "C:\[path_to_python]\Python37-32\lib\site-packages\Crypto\Cipher\PKCS1_OAEP.py", line 167, in decrypt
    raise ValueError("Ciphertext with incorrect length.")
ValueError: Ciphertext with incorrect length.

我相信这意味着我们的脚本不使用相同的密码,我对这个假设是正确的吗?但是,我找不到bash脚本使用的密码(我的同学也不知道),我正在努力寻找如何在python加密模块中使用另一个密码。在

我尝试过将加密和解密方法转换为类似的方法:

from Crypto.PublicKey import RSA

def encrypt_public_key(msg, public_key):
    return public_key.encrypt(msg, 32)
def decrypt_private_key(msg, private_key):
    return private_key.decrypt(msg)

但这给了我以下错误:

File "[script_path]", line 52, in decrypt_private_key
    return private_key.decrypt(msg)
  File "[python-path]\Python37-32\lib\site-packages\Crypto\PublicKey\RSA.py", line 378, in decrypt
    raise NotImplementedError("Use module Crypto.Cipher.PKCS1_OAEP instead")
NotImplementedError: Use module Crypto.Cipher.PKCS1_OAEP instead

这就是密码(PKCS1_OAEP),它不能使用我同学的加密密钥。在

你对我能做些什么来解决这个问题有什么建议吗?问题是我们使用了不同的密码,有没有一种方法可以切换我的密码,还是必须从python加密模块切换?在


Tags: 方法key程序脚本密码return密钥msg
1条回答
网友
1楼 · 发布于 2024-04-29 05:00:21

您可能正在使用不同的RSA填充方案。 也许你的同学可以尝试使用rsautlOAEP填充选项-oaep。在

openssl rsautl的默认填充模式似乎是-pkcs(PKCS#1v1.5)。在

或者,您可以尝试使用:

from Crypto.Cipher import PKCS1_v1_5

相关问题 更多 >