파이썬의 3가지 모듈에 대해서 알아볼것이다. (hashlib, urllib, base64)
(참고) 해시랑 베이스64 에는 다음 두 코드가 반복적으로 사용되는데
인코드는 문자열을 바이너리값으로, 디코드는 문자열을 UTF-8 값으로 변환시키는 과정이며 파이썬에 내장되어있는 기본 함수다.
1. hashlib
hashlib 는 sha1, sha224, sha256, sha384, sha512, md5 해시를 지원한다. 응답 예시를 위해 string은 'test' 를 사용하였다.
트위치에서는 sha1 과 sha256를 주로 사용한다.
* 다양한 해시를 생성하기 위해서는 다음과 같이 사용하면 된다. (특정 해시만 골라 사용해도 됨)
sha = hashlib.new(i)
sha.update(string.encode('utf8'))
print(sha.hexdigest())
a94a8fe5ccb19ba61c4c0873d391e987982fbbd3 90a3ed9e32b2aaf4c61c410eb925426119e1a9dc53d4286ade99a809 9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08 768412320f7b0aa5812fce428dc4706b3cae50e02a64caa16a782249bfe8efc4b7ef1ccb126255d196047dfedf17a0a9 ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff 098f6bcd4621d373cade4e832627b4f6 |
* 특정 해시를 골라 사용하고 싶다면 다음 중 원하는 코드만 사용해도 된다.
print(hashlib.sha224(string.encode('utf8')).hexdigest())
print(hashlib.sha256(string.encode('utf8')).hexdigest())
print(hashlib.sha384(string.encode('utf8')).hexdigest())
print(hashlib.sha512(string.encode('utf8')).hexdigest())
print(hashlib.md5(string.encode('utf8')).hexdigest())
a94a8fe5ccb19ba61c4c0873d391e987982fbbd3 90a3ed9e32b2aaf4c61c410eb925426119e1a9dc53d4286ade99a809 9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08 768412320f7b0aa5812fce428dc4706b3cae50e02a64caa16a782249bfe8efc4b7ef1ccb126255d196047dfedf17a0a9 ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff 098f6bcd4621d373cade4e832627b4f6 |
* 본인만의 규칙으로 해시를 생성하고 싶다면 다음과 같은 함수를응용하면 된다. (인수값 바꾸면 됨)
print(hashlib.scrypt(password=string.encode('utf8'), salt='salt'.encode('utf8'), n=2, r=1, p=1, maxmem=1000).hex())
9031eb99ce2e6fd8cd3ce25de7f56718bffd773b 0517396b1efe238eef72d1f7429ee0123c05b6c39a7595397c974ec4a038a9a6dfe3032692bd2bdd23af62a209e6bb17a8df89eab0e32a2e8db3f4f8cd0cab6d |
2. urllib
urllib 중 url 인코딩 디코딩 과정만 알아볼것이다.
* url 인코딩
%ED%85%8C%EC%8A%A4%ED%8A%B8 |
* url 디코딩
테스트 |
url 인코딩은 url에 사용할 수 없는 문자열을 url에 사용할 수 있는 문자열로 바꾸어주는 과정이고, url 디코딩은 url 에서 사용하는 문자열을 우리가 쉽게 알아볼 수 있게 만들어 주는 과정이다.
* 응용
레지스트리를 편집하면 브라우저 북마크로 프로그램을 실행시킬 수 있는데 인수전달을 위해 위와 같은 코드를 사용해도 된다.
예를들어 레지스트리편집기를 열어서 HKEY_CLASSES_ROOT\test\shell\open\command 디렉토리를 생성하고 test에 "URL Protocol" 문자열 추가, command 데이터에 "프로그램 주소" "%1" 변경 하면 test:// 라는 주소로 설정된 북마크로 프로그램을 실행할 수 있다. (test://abcd.efgh 라는 북마크를 실행한다면 위의 값은 abcd.efgh 라는 문자열을 반환한다.)
이를 좀더 이용하면 브라우저에서 특정 방송을 녹화하는 프로그램을 바로 실행시키게 할 수 있다.
3. base64
base64 인코딩 및 디코딩 과정을 알아볼 것이다.
* base64 인코딩
aHR0cHM6Ly93d3cubmF2ZXIuY29tLw== |
* base64 디코딩
https://www.naver.com/ |