#encrypting an image using AES
import binascii
from Crypto.Cipher import AES
def pad(s):
return s + b"\0" * (AES.block_size - len(s) % AES.block_size)
filename = 'path to input_image.jpg'
with open(filename, 'rb') as f:
content = f.read()
#converting the jpg to hex, trimming whitespaces and padding.
content = binascii.hexlify(content)
binascii.a2b_hex(content.replace(' ', ''))
content = pad(content)
#16 byte key and IV
#thank you stackoverflow.com
obj = AES.new('This is a key123', AES.MODE_CBC, 'This is an IV456')
ciphertext = obj.encrypt(content)
#is it right to try and convert the garbled text to hex?
ciphertext = binascii.hexlify(ciphertext)
print ciphertext
#decryption
obj2 = AES.new('This is a key123', AES.MODE_CBC, 'This is an IV456')
plaintext = obj2.decrypt(ciphertext)
#content = content.encode('utf-8')
print plaintext
#the plaintext here matches the original hex input file as it should
with open('path to - AESimageDecrypted.txt', 'wb') as g:
g.write(plaintext)
내 질문은, 배 두 가지입니다 1) 나는 기본적으로 진수의 텍스트 파일입니다 hexlify 전에 왜곡 된 암호화 된 파일()을 변환하는 방법에 대한 갈 것입니다 방법 문자열, 다시 이미지로? 출력을 모든 뷰어에서 jpg로 볼 수 있기를 바랍니다.그것을
필자가 원하는 것을 할 수 있는지를 파악할 수 없다는 점을 제외하고 필자는 몇 가지 시도를 해봤습니다.
감사합니다. 감사드립니다.
추신 : 나는 다른 암호에도 이것을 시도하고 싶습니다. 그래서 만약이 이해가 옳은지 아무도 명확히하는 데 도움이된다면 도움이 될 것이라고 생각합니다.
jpg -> 바이너리/16 진수로 변환 -> 암호화 -> 깨진 출력 -> bin/hex -> convert로 변환 jpg
2)는 위의 내용입니까? 16 진수 또는 빈으로 변환해야합니까?
hexlify + encrypt를 되돌리려면 decrypt + unhexlify를 적용 하시겠습니까? – zvone
@zvone 거기에 방법입니다 hexlify + 암호화 -> jpg로 변환? 명확하게 말하면, 왜곡 된 암호문을 이미지로 변환하는 방법이 있는지 알고 싶습니다. – baconSoda
물론 방법이 있지만 문제가 무엇인지 아직 이해할 수 없습니다. 첫째, 왜 jpg를 16 진수로 변환하고 있습니까? 둘째, 16 진수를 원본으로 변환하는 것 외에는 모든 것이있는 것처럼 보입니다. 당신이 여기있다 : http://stackoverflow.com/q/9641440/389289 – zvone