이번에는 비밀번호 변경을 해보겠습니다. 찾아보니 역시 django답게 비밀번호를 변경하는 form이 존재했습니다. 하지만 이 form은 비밀번호 8자리 이상 등 귀찮은 조건을 갖추고 있습니다. 그렇기에 form을 이용한 것과 직접 함수를 짠 것 2가지로 해보겠습니다. 1. form 이용 비밀번호 변경을 위한 app의 views.py의 module import 부분에 다음을 추가합니다. from django.contrib.auth.forms import PasswordChangeForm from django.contrib.auth import update_session_auth_hash from django.contrib import messages 그리고 함수는 아래와 같습니다. def change_pa..
이번에 django에서 소셜 로그인 구현을 해보도록 하겠습니다. 우선 pip install django-allauth를 설치해줍니다. (업데이트가 필요하다고 하면 하시면 됩니다.) 그리고 setting.py에 다음을 추가합니다. 우선은 제일 많이 이용하는 구글 로그인만 구현해봅시다. INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.sites', #추가 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'siteapp.apps.SiteappConfig', ..
github에 자료를 올리다보면 로그기록과 같이 불필요한 경우나, db 와 같이 공개되면 안되는 것들도 존재한다. 이러한 것들을 하나하나 제외하지 않고 미리 얘네들은 안 올릴거에요 하는 것이 gitignore이다. 방법은 간단하다. window 기준으로 bash shell을 이용해 다음과 같이 하면 된다. git init git touch .gitignore 이후 vi를 이용해 내용을 추가하여도 되고, .gitignore파일을 text 편집기와 연결하여 사용해도 된다. (ex 메모장) gitignore 파일에 어떤걸 추가하면 되는지는 www.toptal.com/developers/gitignore 여기에 있는 내용을 복붙하면 된다. gitignore.io Create useful .gitignore fi..
www.acmicpc.net/problem/1963 1963번: 소수 경로 소수를 유난히도 좋아하는 창영이는 게임 아이디 비밀번호를 4자리 ‘소수’로 정해놓았다. 어느 날 창영이는 친한 친구와 대화를 나누었는데: “이제 슬슬 비번 바꿀 때도 됐잖아” “응 지금 www.acmicpc.net 간단한 bfs 문제이지만, 초기화를 이상하게 해서 푸는데 20분, 에러 찾는데 1시간이 걸린 문제입니다. 너무 화가 납니다 ㅎㅎㅎ 4자리 소수를 한 자리씩 바꿀 수 있고, 이 바꾼 수 또한 소수여야합니다. 그렇게 한 자리씩 바꾼 수가 목표한 수가 될 때까지 수를 바꾼 횟수의 최솟값을 구하면 됩니다. 에라토스테네스 체를 이용해 1000~9999까지 소수들을 미리 구해준 뒤, bfs를 이용해 각 자리별로 0~9까지로 바꾼 ..
SHA-1,2,3까지 현재 나왔다. MD5가 깨지면서 대체된 해쉬 함수 기반 암호이다. 우선 해쉬 함수는 임의의 길이의 input을 넣어도 일정 길이의 output이 나오는 함수를 의미한다. 대표적인 예로 modulo 연산이 존재한다. Z_10에서 input이 무엇이더라도 mod 10 연산에 의해 0~9 값 중 하나로 결정된다. MD는 깨졌지만 SHA-1의 기반이 된 암호이므로 살펴보자. 기본 MD 함수 구조는 다음과 같다. MD4 : f : {0,1}^128 x {0,1}^512 -> {0,1}^128, h_i = f(h_(i-1), m_i) 의 구조를 가진다. 48step(3rounds)를 이룬다. MD5: f : {0,1}^128 x {0,1}^512 -> {0,1}^128, h_i = f(h_(i..