저장 형식은 id:패스워드 인데, 패스워드를 암호화 해서 저장하라고 했다.
그런데 책에서는 암호화 방식으로 sha 모듈을 사용 하라고 했는데, 파이썬 2.6 버전에서는 sha 모듈이 더 이상 사용 되지 않고 있다. 대신 hashlib 에 여러 암호화 모듈을 모아서 사용 하고 있는데, hashlib 에 sha1 이 책에서 사용하고 있는 암호화 방식과 같다.
즉, 책에 나온 예를 바꾸면
>>> import hashlib >>> password = 'my pass word' # 내 패스워드 >>> encrypted = hashlib.sha1(password).hexdigest() >>> encrypted 'f64e382ba76a546b48d8e3b924ef1592fdc11487'로 바꿀 수 있다.
그리고 프로그램을 코딩 하면 아래와 같이 코딩할 수 있다.
import hashlib ID = raw_input('User ID : ') password = raw_input('User Password : ') encrypted = hashlib.sha1(password).hexdigest() f = open('access.txt', 'a') f.write(':'.join([ID, encrypted+'\n']))
11번 문제는 사용자로부터 id 와 패스워드를 입력 받아 access 파일에 등록된 사용자인지 아닌지를 확인하는 프로그램을 작성하는 문제이다. 위의 코딩을 살짝 바꾸어 아래와 같이 코딩할 수 있다.
import hashlib ID = raw_input('User ID : ') password = raw_input('User Password : ') encrypted = hashlib.sha1(password).hexdigest() f = open('access.txt') for line in f : if line == ':'.join([ID, encrypted + '\n']) : print 'You are a registered member.' break else : print 'Sorry, you are not a registered member.'
댓글 없음:
댓글 쓰기