Python中的加密/解密; 解密未工作

2024-04-19 18:08:25 发布

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

我试图解密一些加密的.jpg图像使用python加密

def decrypt(input_filename, output_filename, password, cipher):
       ciphers = ['AES_ECB']
       key = generate_key(password)
       #Loading Pixel Data
       im = Image.open(input_filename)
       pix = im.load()
       rgb_im = im.convert('RGB')
       size = im.size
       image = Image.new('RGB', im.size)
       pix1=image.load()
       print "Filesize: " + str(size)
       for x in range(256):
          for y in range (256):
              pixel = rgb_im.getpixel((x, y))
              print pixel#DEBUG
              if cipher == ciphers[0]:
                 print x,y
                 pix1[x,y] = decryptPixel(pixel, key)
     image.save(output_filename)

但我有个错误:

       17             if cipher == ciphers[0]:
       18                 print x,y
  ---> 19                 pix1[x,y] = decryptPixel(pixel, key)
       20     image.save(output_filename)

OverflowError: Python int too large to convert to C long

你能帮我解决这个问题吗?你知道吗

def decryptPixelComponent(component, key):
     decryptor = AES.new(key, AES.MODE_ECB)
     component_hash = hashlib.sha256(str(component)).digest()
     component = decryptor.decrypt(component_hash).encode('hex')
     #print int(component, 16)
     return int(component, 16)
def decryptPixel(pixel, key):
        (red, green, blue) = pixel
        return (decryptPixelComponent(red, key),
        decryptPixelComponent(green, key),
        decryptPixelComponent(blue, key))

“decryptPixel”的结果是tuple,pix1也是tuple。然而,当我试图更新pix1时,我得到了这个溢出错误。你知道吗


Tags: keyimageoutputsizedeffilenamecomponentcipher
1条回答
网友
1楼 · 发布于 2024-04-19 18:08:25

查看“decryptPixelComponent”函数,似乎您正在解密像素的哈希值(“component\u hash”)。我认为你应该尝试在没有散列(“组件”)的情况下解密。你知道吗

def decryptPixelComponent(component, key):
     decryptor = AES.new(key, AES.MODE_ECB)
     component = decryptor.decrypt(component).encode('hex')
     #print int(component, 16)
     return int(component, 16)

相关问题 更多 >