http-status-codes 모듈을 활용한 status code 사용crypto 모듈을 이용한 hashing : users 테이블의 비밀번호 hashingpicsum ─ 테스트용 더미 이미지 웹사이트JOIN , DATE_SUB , BETWEEN ,NOW() 이용, 한달 이내 데이터 가져오기LIMIT _ OFFSET _ 이용, 개수 제한하여 데이터 가져오기 ( 페이징 )book_id , user_id 컬럼을 만들어서 개수를 세서 좋아요를 나타낸다고 하였는데,| liked_book_id | user_id |
|---|---|
| 1 | 1 |
| 1 | 2 |
| 2 | 3 |
| 2 | 4 |
좋아요 수를 빠르게 돌려주는 것처럼 수행할 수 있다.Q : hashing(해싱)과 encryption(암호화) 의 차이는?
1. 해싱 : 단방향 ( 복호화 불가 )
ex)
const salt = crypto.randomBytes(10).toString('base64');
const hashPassword = crypto.pbkdf2Sync(password, salt, 10000, 10, 'sha512').toString('base64');
위 코드에서 hashPassword를 다시 password로 돌려낼 수 있는 방법은 없다.
salt를 데이터베이스에 따로 저장한 뒤, 이를 이용해 사용자가 입력한 password를 저장된 salt로 hashing해서 해싱된 문자열을 비교하는 방법밖에 없다.
2. 암호화 : 양방향 ( 복호화 가능 )
암호화는 암호화를 수행할 때 사용했던 Key값을 알고만 있다면,
해싱과 달리 password를 복호화 할 수 있다.
결론 :
비밀번호처럼 굳이 복호화를 안해도 salt값을 같이 저장하여 사용자에 대한 정보를 식별할 수 있는 경우 해싱을 사용한다. 해커가 salt와 hashedPassword 값을 알아내도, 원래 password 값을 알아낼 수 없다.
메시지, 컨텐츠 등 사용자에게 보여져야 할 정보들을 복호화를 해서 원래 형태로 보여줘야 할 경우에는 암호화를 사용한다.