さて、これをもう一度試してみましょう。
アニメーションGIFをPyCryptoで暗号化して、誰かに送信しようとしています。受信者がそれを取得すると、暗号化されていないファイルをハードドライブに保存せずに、私のpycryptoスクリプトを実行してアニメーション画像を表示できるようになります。基本的に、暗号化されていないファイルをメモリに保存して、ディスクに保存せずに別のライブラリからアクセスできるようにしようとしています。
私が使用している暗号化には
import os, random, struct
from Crypto.Cipher import AES
def encrypt_file(key='8c57d066796428d5a8f4b012155dad90', in_filename='tile.png', out_filename=None, chunksize=8192):
""" Encrypts a file using AES (CBC mode) with the
given key.
key:
The encryption key - a string that must be
either 16, 24 or 32 bytes long. Longer keys
are more secure.
in_filename:
Name of the input file
out_filename:
If None, '<in_filename>.enc' will be used.
chunksize:
Sets the size of the chunk which the function
uses to read and encrypt the file. Larger chunk
sizes can be faster for some files and machines.
chunksize must be divisible by 16.
"""
if not out_filename:
out_filename = in_filename + '.enc'
iv = ''.join(chr(random.randint(0, 0xFF)) for i in range(16))
encryptor = AES.new(key, AES.MODE_CBC, iv)
filesize = os.path.getsize(in_filename)
with open(in_filename, 'r') as infile:
with open(out_filename, 'w') as outfile:
outfile.write(struct.pack('<Q', filesize))
outfile.write(iv)
while True:
chunk = infile.read(chunksize)
if len(chunk) == 0:
break
elif len(chunk) % 16 != 0:
chunk += ' ' * (16 - len(chunk) % 16)
outfile.write(encryptor.encrypt(chunk))
、しかしそれは何もしていないようです。復号化されたファイルをハードドライブに保存せずにアクセスできるようにする必要があるため、復号化部分のどこから始めればよいのかさえわかりません。
みんなありがとう。