私はプログラミングの経験がなく、PyCrypto のドキュメントは初心者にはかなりまばらです。以下に書いたコードでファイルを暗号化し、インターネット経由で送信するとしましょう。私が懸念しているのは、コンピューター A と B の間のファイルのセキュリティです。コンピューター自体が安全であり、キーが安全に転送されると仮定しましょう。物事を正しく実装しましたか? 他に知っておくべきことはありますか?Python 2.7 と PyCrypto 2.6 の使用
ご回答ありがとうございます。
from Crypto.Cipher import AES
from Crypto import Random
def get_random(length):
r = Random.new().read(length)
return r
def aes_encrypt(key, file_in, file_out):
data_source = open(file_in, 'rb')
data = data_source.read()
data_source.close()
iv = get_random(AES.block_size)
cipher = AES.new(key, AES.MODE_CFB, iv)
data_encrypted = iv+cipher.encrypt(data)
file_encrypted = open(file_out, 'wb')
file_encrypted.write(data_encrypted)
file_encrypted.close()
def aes_decrypt(key, file_in, file_out):
data_source = open(file_in, 'rb')
data = data_source.read()
data_source.close()
iv = data[:AES.block_size]
data = data[AES.block_size:]
cipher = AES.new(key, AES.MODE_CFB, iv)
data_decrypted = cipher.decrypt(data)
file_decrypted = open(file_out, 'wb')
file_decrypted.write(data_decrypted)
file_decrypted.close()
#testing
key = get_random(32)
#encrypting the file on computer A
aes_encrypt(key, 'file.dat', 'file.enc')
#decrypting the file on computer B
aes_decrypt(key, 'file.enc', 'file.dat')