Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- CUDA9.0
- python yield
- 하늘숲황토펜션
- 황토펜션
- 파이썬 GUI
- 파이썬 yield
- HTML
- 오봉 계곡
- 텐서플로 설치
- 하늘숲 황토 펜션
- 지리산 황토 펜션
- 지리산 펜션
- 계곡 펜션
- tensorflow
- 전용 계곡
- 아나콘다 텐서플로
- 파이썬
- 출근 전날
- Python
- machine learning
- LISP
- tensorflow 설치
- 산청 황토 펜션
- ubuntu
- 인공지능
- anaconda tensorflow
- cuda
- LISP 함수
- 하늘숲펜션
- 지리산 둘레길
Archives
- Today
- Total
YongWook's Notes
<상식> 문화상품권 시리얼 번호의 원리 본문
문화상품권의 시리얼번호는어떻게 생성할까? 문화상품권을 찍어내고 시리얼번호는 데이터베이스에 저장할 것이라는 일반적인 생각과는 달리 문화상품권 회사는 시리얼번호를 저장하지 않는다. 현금과 직접적으로 연결되는 상품권이기 때문에 보안상의 위험도 크고 비효율적이기 때문이다. 대신 hash를 사용한다.
def myhash(x): y = ((x+11)**3 +(x+13)**2 + 35)**2 y = y%10000 return y mcode = raw_input("문화상품권 번호를 입력하세요.") if len(mcode) == 4: print mcode, myhash(int(mcode)) print "문화상품권이 생성되었습니다" exit() if len(mcode) != 8: print "문화상품권 번호는 반드시 8자리입니다" exit() f = int(mcode[0:4]) s = int(mcode[4:]) print f, s if myhash(f) == s: print "올바른 문화상품권 입니다" else: print "당신의 문화상품권은 가짜입니다"
위의 예와 같이 특정한 hash함수를 만들어 놓고 그 함수에 대한 보안만 철저히 하면 나머지 첫 네자리 번호로 나머지 문화상품권의 번호를 만들어 낼 수 있다. 여차하면 4*3 으로 12자리 시리얼번호를 가지는 문화상품권을 만드는 경우 두개의 hash함수를 사용하며 첫 네자리로 다음 4~8번째 번호를 생성하고 4~8번째 번호를 두번째 hash를 이용해 9~12자리 번호 생성에 사용 할 수 있다.
26자의 알파벳 대문자와 10진수 숫자를 사용하면 1,679,616가지의 경우를 만들 수 있다. 여기서 한자리를 추가하여 5자리 숫자 조합으로 만드는 등 hash에 들어가는 숫자개수를 늘리는 방법을 사용하면 충분히 많은 양의 문화상품권을 만들 수 있다.
'-software' 카테고리의 다른 글
<LaTeX> C4.5 알고리즘 pseudo-code (0) | 2016.06.23 |
---|---|
<xpath> 개념정리와 기본문법 (0) | 2016.04.13 |
<영상처리> 비트맵으로 스도쿠 읽고 풀기 (0) | 2016.03.28 |
Comments