3

メモリ内のファイル コンテンツ全体を読み取り、次のコードを使用して暗号化できることがわかっています。

contents = fin.read()
cipher = M2Crypto.EVP.Cipher(alg="aes_128_cbc", key = aes_key, iv = aes_iv, op = 1)
encryptedContents = cipher.update(contents)
encryptedContents += cipher.final()

しかし、ファイル サイズが大きい場合、最初にファイル全体を読み取る代わりに、入力ストリームを M2Crypto に渡す方法はありますか?

4

1 に答える 1

3

.update(data) を複数回呼び出すことができることを理解しました。

メモリ使用量を最小限に抑え、出力にファイルを使用するには、次のことができるはずです。

cipher = M2Crypto.EVP.Cipher(alg="aes_128_cbc", key = aes_key, iv = aes_iv, op = 1)
encrypted_contents_file = open(outfile_name, "w")

while True:
    buf = fin.read(1024)
    if not buf:
        break
    encrypted_contents_file.write(cipher.update(buf))

encrypted_contents_file.write( cipher.final() )
于 2012-10-03T16:11:13.277 に答える