[Python] SHA256 암호화&복호화

김영환·2021년 1월 18일
0
post-thumbnail

바이트 자료형과 인코딩

파이선에서 문자열(str)의 기본 인코딩은 UTF-8 인데, b'hello' 와 같이 문자열을 바이트 객체로 만들면 각 문자를 ASCII 코드로 저장합니다.
보통 문자열을 UTF-8이 아닌 ASCII 코드로 처리하고 싶을 때 바이트 객체를 사용합니다.

bytes, str, unicode의 차이점

파이썬 3 의 문자타입

  • bytes : raw 8 bit
  • str : unicode 문자

암호화 할때 byte 형 변화하는 이유?

문자 타입이 분리되어 있는 탓에 파이썬 코드에서 일반적으로 다음 두 가지 상황에 부딪힘
- UTF-8(or 다른 인코딩)으로 인코드된 문자인 raw 8 bit 값을 처리하려는 상황
- 인코딩이 없는 유니코드 문자를 처리하려는 상황

how to encode?

pw = 'test'
pw.encode()
print(pw)
>> b'test'
pw = 'test'
bytes(str,'utf-8')
print(pw)
>> b'test'

Python hash256 암호화

  • encode : 인코딩 <-> deconde : 디코드
  • hamc : 메세지 인증을 위한 키 해싱 ( hashing authauge message code )
  • hashlib : 보안 해시 함수를 제공하는 Python 모듈입니다.
  • digest : 주어진 비밀 key 와 digest 로 msg의 다이제스틀 반환합니다.
    hmac(key, msg, digest).digest()
  • new() : 새로운 hmac 객체를 반환한다. key는 비밀 키를 제공하는 바이트열이나 바이트 배열(bytearray) 객체입니다.

🆗 핵심정리

  • 파이썬 3에서 byte : raw 8bit, str: unicode
    > or + 같은 연산자에 bytes 와 str 인스턴스를 함께 사용할수 없다.
  • 헬퍼 함수를 사용해서 처리할 입력값 원하는 문자 시퀀스 타입으로 되어있게 한다.
  • 바이너리 데이터를 파일에서 읽거나 쓸 때는 파일을 바이너리모드( rb or wb)로 오픈

0개의 댓글