Python/2.7 information

md5, sha1, base64등의 인코딩,디코딩

qkqhxla1 2014. 8. 10. 13:49

파이썬으로 쉽고 빠르게 인코딩 디코딩이 가능합니다.


워게임 풀때 많이 나오는 md5, sha1, base64를 다루기에 좋습니다.

 

hashlib이라는 모듈로 md5,sha1인코딩이 가능합니다. 

 

예제코드.(md5)

import hashlib
h = hashlib.md5()
h.update('abcde') #update 안에는 인코딩할 문자열을 집어넣습니다.
print h.hexdigest() #hexdigest는 우리가 익히 아는 16진수로 출력.
print h.digest() #digest는 한글로 변환되어 이상하게 출력.

코딩 돌린 결과.



 

md5로 인코딩해주는 사이트인 http://www.md5encryption.com/ 에서 abcde를 md5로 인코딩한 결과


 

동일하게 나오는걸 확인할수 있겠네요.

 

예제코드(sha1)

import hashlib

h = hashlib.sha1() #여기만 sha1로 바꿔주면 됩니다.
h.update('abcde')
print h.hexdigest() #마찬가지로 16진수출력
print h.digest() #마찬가지 한글로 출력.. 

코딩결과 

%추가 : hashlib.sha1('abcde').hexdigest()이런식으로도 가능.



 

sha1로 인코딩해주는 사이트인 http://kr.freemd5.com/index.php#.U9iFrPl_tzs 에서 abcde를 sha1로 인코딩결과



역시 동일하게 나옵니다.

 

base64관련 인코딩은 base64라는 모듈로 가능합니다.

 

예제코드.

import base64 
print base64.b64encode('abcde')


%추가 print 'abcde'.encode('base64')이런식으로도 되는듯함

코드를 짜다 보면 아시겠지만 base64는 b64encode말고도 b32encode, encodestring등 헷갈리는 메소드가 많습니다. 다른거 쓰지말고 b64encode쓰셔야 해요..

코딩결과



http://ostermiller.org/calc/encode.html​ 에서 base64인코딩결과도 역시 동일하게 나오는걸 확인할수 있습니다.

 

마지막으로, md5는 인코딩시 32자, sha1은 40자, base64는 대부분(아닐 수도 있음.) =으로 끝나니 


알아두면 편할겁니다.


모듈 활용-> http://qkqhxla1.tistory.com/entry/webhackingkr-6%EB%B2%88


--------------------------------------------------------

2014-10-10 내용 추가


http://cdpython.tistory.com/16 


에서 본건데 url인코딩 디코딩을 urllib.quotes, urllib.unquotes로 할수 있음.