我编写了一个实现加密和解密的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加密模块切换?在
您可能正在使用不同的RSA填充方案。 也许你的同学可以尝试使用
rsautl
OAEP填充选项-oaep
。在openssl
rsautl
的默认填充模式似乎是-pkcs
(PKCS#1v1.5)。在或者,您可以尝试使用:
相关问题 更多 >
编程相关推荐