2023년 4월 18일 화요일

Python AES 128 Mode CRC

오랜만에 소스 코드이다.
전에 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/

2023년 4월 17일 월요일

2023년 두번째 도서 리뷰 "개발자를 위한 머신러닝&딥러닝"

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

빅데이터가 유행한지는 10년이 넘었고 , 머신러닝이나 딥러닝이 화제가 된지도 꽤 지났다.

요즘은 chatGPT가 화제이다.


요즘 하고 있는 일은 사실 빅데이터에서 벗어나지 않고 있다.

데이터의 수집과 가공, 통계 정도가 대부분의 업무이다.


그런데 여기에 머신러닝이나 딥러닝을 도입해 보면 어떨까 생각해보았다.
데이터가 워낙 많아서 처리하는 서버 성능 고민 같은건 나중에 한다 치고...

해서 관련 자료를 하나 본적이 있는데 거의 대부분 내용이 수학 식이었다.

그때 GG를 치고 덮어 두고 있다가 이번에 이 책을 받게 되었다.


저자는 제목과 서두에 대놓고 수학식 따위 없고 그냥 개발자가 보기 좋은 책이라고 설명 해 주고 있다.

실제로 책은 파이썬과 그 외 몇가지 언어들로 많은 것들을 해 볼수 있도록 내용이 구성 되어 있었다.


1부는 파이썬으로 텐서 플로를 다양하게 활용 하는 방법에 대해서 소개 하고 있다.

물론 친절하게도 텐서플로 소개부터 시작해서 컴퓨터 비전, 자연언어처리 등을 다룰 수 있도록 설명하면서 마지막에는 특성을 예측하는 모델을 만드는 내용까지 다루고 있다.

짧게 설명 하자면 텐서플로를 이용한 머신러닝, 딥러닝의 기초와 간단한 활용에 대해서 다양한 예시를 활용하여 개발자가 접근하기 좋게 설명 해 주고 있다.

세삼...파이썬이 참 열일 하고 있다는 생각이 든다.

파이썬을 우연하게 접하게 되어서 지금까지 잘 쓰고 있는데 그때 공부해두기를 정말 잘했다는 생각이 자주 든다.


2부는 안드로이드나 iOS, 웹에서 텐서플로를 이용할 수 있는 방법에 대해서 소개하고 있다.

개인적으로 앱 개발이 본업이었던 기간이 길어 코틀린이나 스위프트가 크게 낮설지 않아 2부의 내용도 꽤 마음에 들었다.

(웹은 이상하게 개발할 일이 없다 시피 해서 node.js같은건 아직도 잘 모른다.)


앱 개발 개인 프로젝트를 구상중인데 2부 내용 덕분에 프로젝트 구상의 폭이 더 넓어 질 수도 있을것 같다.


책을 짧게 축약해 보자면 개발자가 머신러닝이나 딥러닝을 활용하고 싶을때 많은 도움을 줄 수 있는 내용이 잘 정리 되어 있는 책이라 할 수 있을것 같다.

일단 수학식이 아니라 코드로 얘기 하니까...ㅎㅎ

2024년 첫번째 도서 리뷰 GPT-4를 활용한 인공지능 앱 개발

 "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다." 24년 첫 도서 리뷰이다. 작년까지? 한참 핫 했던 인공지능 서비스 Chat GPT에 관한 책이다. 핑계지만 어쩌다보니 GPT에 대한 접근이...