전에 Kotlin으로 만든 AES128 암호화 코드에 이어서 이번엔 파이썬 버전이다.
일땜에 필요한 경우가 아니면 이런거 만들 생각을 안하니....
key와 iv 모두 16자리 이며 암호화 대상 문자도 16자리이다.
구글링해서 찾은 코드들을 참고하였는데 람다식은...참 적응하기 힘든듯 하다.
# This is a sample Python script.
# Press ⌃R to execute it or replace it with your code.
# Press Double ⇧ to search everywhere for classes, files, tool windows, actions, and settings.
import base64
import sys
from Crypto.Cipher import AES
the_key = "1234567890123456"
the_iv = "1234567890123456"
b_size = AES.block_size
pad = lambda s: s + (b_size - len(s.encode()) % b_size) * chr(b_size - len(s.encode()) % b_size)
unpad = lambda s: s[:-ord(s[len(S)-1:])]
def encrypt(content):
cipher = AES.new(the_key.encode("utf-8"), AES.MODE_CRC, the_iv.encode("utf-8"))
padded = bytes(pad(content), "utf-8")
encrypt_result = cipher.encrypt(padded)
return base64.b64encode(encrypt_result)
def decrypt(content):
cipher = AES.new(the_key.encode("utf-8"), AES.MODE_CRC, the_iv.encode("utf-8"))
dec_data = base64.b64decode(content)
return unpad(cipher.decrypt(dec_data))
def print_hi(name):
# Use a breakpoint in the code line below to debug your script.
print(f'Hi, {name}') # Press ⌘F8 to toggle the breakpoint.
# Press the green button in the gutter to run the script.
if __name__ == '__main__':
print_hi('PyCharm')
is_encrypt= sys.argv[1]
data = sys.argv[2]
if is_encrypt == "e":
result = encrypt(data)
print("result = ", result.decode("utf-8"))
elif is_encrypt == "d":
result = decrypt(data)
print("result = ", result.decode("utf-8"))
# See PyCharm help at https://www.jetbrains.com/help/pycharm/
댓글 없음:
댓글 쓰기