password 암호화시 bcrypt 방식으로 하기로 하였다.
bcrypt - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. bcrypt 파일 암호화 유틸리티에 대해서는 블로피시 문서를 참조하십시오. bcypt는 블로피시 암호에 기반을 둔 암호 해시 함수로서 Niels Provos와 David Mazières가 설계
ko.wikipedia.org
왜 Password hashing시 Bcrypt 가 추천되어질까?
정확히는 bcrypt가 정답은 아닙니다. 일반적으로 공격자는 GPU를 이용하여 빠른 연산속도로 암호화 공격 시도를 합니다. 어떤 암호화 함수(sha-2, bcrypt, pbkdf2, scrypt, ..)를 쓰던 강력하지만, 충분한 시
velog.io
사용 라이브러리 : bcrypt
#install
pip install bcrypt
pip3 install bcrypt
# 안되는 경우안되는 경우 pip version >= 20 안되는거 일수도 있으니 pip을 update 해주자.
python -m pip install -U pip
import bcrypt
import mysql.connector
# 암호화
data = {id:'test', password: '123'}
passwordSalt = bcrypt.gensalt()
passwordHash = bcrypt.hashpw(data['password'], passwordSalt)
# 에러남
TypeError: Unicode-objects must be encoded before hashing
# bcrypt를 불러오고 password라는 변수에 str 형식의 암호화 할 대상으로 하면 에러가 난다고 한다.
# 암호화 함수는 오직 bytes string에서만 작동한다고한다.
# 해싱하기 전에 password를 bytes string으로 변환 필요
# utf8 인코딩은 str 형태일 진행
password = password.encode('utf-8')
# 암호화
passwordHash = bcrypt.hashpw(password, passwordSalt)
# 실제 저장되는 값
#decode 후 저장하지 않으면 나중에 checkpw 할때 ValueError: Invalid salt 에러가 나온다.
insertPasswordHash = passwordHash.decode()
# 확인
inputPassword = '123'
dbconn = mysql.connector.connect(**config)
cursor = dbconn.cursor(dictionary=True)
sql = 'select * from users where id = "test"';
cursor.execute(sql)
result = cursor.fetchone()
bcrypt.checkpw(inputPassword.encode('utf-8'), result['pw'].encode('utf-8'))
# 결과
true
false
참조
bcrypt
Modern password hashing for your software and your servers
pypi.org
[Django] Account 로그인/회원 가입 부분 암호화, 인증/인가 기능 추가 - 2
이전 포스트에서 암호화, 인증 인가 관련 내용을 토대로 실제 django 기반 api에 적용을 해 보았다.회원 가입 기능 부분에서 password 데이터를 bcrypt를 통해 암호화를 하였다. 암호화 알고리즘은 항상
velog.io
[암호화] bcrypt로 암호화 시작하기
bcrypt는 암호를 해시해주는 파이썬 라이브러리다 가상환경을 구축한 뒤 bcrypt를 설치해 간단한 실습을 했다. 암호화 파이썬 패키지 관리 시스템인 pip를 이용해 bcrypt와 pyjwt를 설치한다 pyjwt는 jwt(j
velog.io
toughrogrammer.tistory.com/216
[Python, Flask] 암호를 안전하게 저장하기
웹 개발을 하다보면 비밀번호를 안전하게 저장해야한다. 일반적으로 해싱을 통해 이것을 해결하는데 단순 해싱의 문제점이 있다. 바로 동일한 문자열을 해싱했을 때 동일한 결과값이 나온다는
toughrogrammer.tistory.com
justkode.kr/python/flask-restapi-3
Flask로 REST API 구현하기 - 3. JWT로 사용자 인증하기
REST API를 사용 하게 된다면, 사용자 인증 방법으로 제일 많이 사용하는 것이 JWT (JSON Web Token) 입니다. JWT에 대해 더 알고 싶다면. Velopert 님의 게시글을 참고 해 주세요! 우선 설치해야 할 것 일단 b
justkode.kr
'프로젝트 설정 > 기타' 카테고리의 다른 글
[Linux] 예약/반복 작업 (crontab/script) + mysqldump (0) | 2021.06.10 |
---|---|
[supervisor ] 10분만에 익히는 supervisor 설치와 사용법 (0) | 2021.06.08 |
HTTPS / SSL / TLS (0) | 2021.03.09 |
NCLOUD 사용기 (서버생성) (0) | 2021.02.15 |
[GIT] reset 한거 취소하는 방법 (0) | 2020.03.18 |