用于解密RSA消息的python脚本

用于解密RSA消息的python脚本,python,encryption,Python,Encryption,我正在编写一个python脚本来解密RSA加密的消息,首先消息是用十六进制加密的,密钥是相同的,所以我所做的是将这两个从十六进制转换为base64,如下所示: 关键: 致: 和信息: 4c0605e901b09d75c5f5befe7438d7246f988531cc7a39a59f24b9488d47dfae9fc8beb5117f34a316f9380607bf239ba6eca84da47a12d720986a8a0100a7e9d7028d7e423557055b9e250f271d64

我正在编写一个python脚本来解密RSA加密的消息,首先消息是用十六进制加密的,密钥是相同的,所以我所做的是将这两个从十六进制转换为base64,如下所示:

关键:

致:

和信息:

4c0605e901b09d75c5f5befe7438d7246f988531cc7a39a59f24b9488d47dfae9fc8beb5117f34a316f9380607bf239ba6eca84da47a12d720986a8a0100a7e9d7028d7e423557055b9e250f271d6436018c58e79a8f26bac10768776f06dc1786dd7428b3c445b8993e884630b36cb2d300fa5dc1fe0eba9e433062d9d8a58f33bf6f93aa37298a5703ccbf71c93adea447f018e9f75bb43dbc528cfc9bed865a9ba43f926071dabc89ccca2e000f1a966855cc9816e45c0113edb55a700198d346a90487b5ff1191994973eb1b5252b22c6410aa70ea4e9c3ebd468ef273d7cf9d15b5824244cd25f252886d1edfe2d6f2caa5d5e00fd84597e3de192db41b
致:

好的,然后我使用以下方法将base64消息转换为原始数据消息:

cat secret|base64-d>rawsecret

现在我有一个秘密和一把钥匙,我想是正确的,对吧

所以我开始写这个剧本:

from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
import base64
import zlib

def decrypt_blob(encrypted_blob, private_key):

    rsakey = RSA.importKey(private_key)
    rsakey = PKCS1_OAEP.new(rsakey)

    encrypted_blob = base64.b64decode(encrypted_blob)

    chunk_size = 2048
    offset = 0
    decrypted = ""

    while offset < len(encrypted_blob):
        chunk = encrypted_blob[offset: offset + chunk_size]

        decrypted += rsakey.decrypt(chunk)

        offset += chunk_size


    return zlib.decompress(decrypted)

fd = open("rawkey.pem", "rb")
key = fd.read()
fd.close()

fd = open("rawsecret", "rb")
encrypted_blob = fd.read()
fd.close()

print decrypt_blob(encrypted_blob, key)
从Crypto.PublicKey导入RSA
从Crypto.Cipher导入PKCS1\u OAEP
导入base64
进口zlib
def decrypt_blob(加密的_blob,私钥):
rsakey=RSA.importKey(私钥)
rsakey=PKCS1_OAEP.new(rsakey)
加密的\u blob=base64.b64解码(加密的\u blob)
区块大小=2048
偏移量=0
解密=“”
当偏移量
但是我得到了一个错误: 回溯(最近一次呼叫最后一次): 文件“decrypt.py”,第35行,在 打印解密\u blob(加密\u blob,密钥) 文件“decrypt.py”,第20行,在decrypt_blob中 解密+=rsakey.decrypt(块)


和具有不正确长度的密文。这是为什么?

有术语错误,如<代码>第一条消息以十六进制加密,没有输出编码为十六进制。python库不接受Base64,请参见@kelalaka好的,如果它不接受Base64,那么我应该使用什么?@kelalaka不,我在这里列出的所有内容都是我需要的have@kelalaka你认为我最好选择什么格式?我还需要将密钥和消息转换为该格式,还是只转换为这两种格式中的一种?但事实并非如此。它不使用任何填充方案,想想原始RSA。第一个也是唯一的提示。
4c0605e901b09d75c5f5befe7438d7246f988531cc7a39a59f24b9488d47dfae9fc8beb5117f34a316f9380607bf239ba6eca84da47a12d720986a8a0100a7e9d7028d7e423557055b9e250f271d6436018c58e79a8f26bac10768776f06dc1786dd7428b3c445b8993e884630b36cb2d300fa5dc1fe0eba9e433062d9d8a58f33bf6f93aa37298a5703ccbf71c93adea447f018e9f75bb43dbc528cfc9bed865a9ba43f926071dabc89ccca2e000f1a966855cc9816e45c0113edb55a700198d346a90487b5ff1191994973eb1b5252b22c6410aa70ea4e9c3ebd468ef273d7cf9d15b5824244cd25f252886d1edfe2d6f2caa5d5e00fd84597e3de192db41b
TAYF6QGwnXXF9b7+dDjXJG+YhTHMejmlnyS5SI1H366fyL61EX80oxb5OAYHvyObpuyoTaR6EtcgmGqKAQCn6dcCjX5CNVcFW54lDycdZDYBjFjnmo8musEHaHdvBtwXht10KLPERbiZPohGMLNsstMA+l3B/g66nkMwYtnYpY8zv2+TqjcpilcDzL9xyTrepEfwGOn3W7Q9vFKM/JvthlqbpD+SYHHavInMyi4ADxqWaFXMmBbkXAET7bVacAGY00apBIe1/xGRmUlz6xtSUrIsZBCqcOpOnD69Ro7yc9fPnRW1gkJEzSXyUohtHt/i1vLKpdXgD9hFl+PeGS20Gw==
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
import base64
import zlib

def decrypt_blob(encrypted_blob, private_key):

    rsakey = RSA.importKey(private_key)
    rsakey = PKCS1_OAEP.new(rsakey)

    encrypted_blob = base64.b64decode(encrypted_blob)

    chunk_size = 2048
    offset = 0
    decrypted = ""

    while offset < len(encrypted_blob):
        chunk = encrypted_blob[offset: offset + chunk_size]

        decrypted += rsakey.decrypt(chunk)

        offset += chunk_size


    return zlib.decompress(decrypted)

fd = open("rawkey.pem", "rb")
key = fd.read()
fd.close()

fd = open("rawsecret", "rb")
encrypted_blob = fd.read()
fd.close()

print decrypt_blob(encrypted_blob, key)