(암호화 : 멀티스레드로 돌아감 (cpu 많이 먹어서)
해시 : 암호화와 달리 암호를 다시 평문으로 되돌릴 수 없다.
그리고 같은 문자열을 해시화 하면 항상 같은 결과가 된다.)
(컴퓨터 발전으로 인해 해시 알고리즘이 취약해진다.)
(위와 같이 알고리즘 먼저 sha512로 넣어주고 변환할 문자열은 update, 인코딩할 알고리즘을 digest에 넣어준다.)
(실제로 해보니 위와 같이 해시화 한 것을 볼 수 있다.이렇게 암호화 된 것이 서버에 저장되는 것이다.)
(bcrypt 의 경우 node 에서 지원을 하지 않는다. 나중에 따로 쓰는 방법 배울 것임)
(salt 값과 비밀번호 값을 서버에 같이 저장하여 보안 강화, salt 가 달라지면 비밀번호도 달라진다.)
(이 경우 key 가 있어야만, 암호화된 문장을 복호화 할 수 있다.
생각보다 취약함, 둘이 같은 키를 가지고 있으면 해커들이 키를 훔치려고 하기 때문.
또한 프론트와 같이 쓰기도 애매하다. 프론트의 코드는 모두 노출되는데, 서버에서 암호화 한것을 프론트에서 해독하려면 서버의 키가 프론트의 키와 같아야 하는데, 프론트의 키는 개발자 도구로 볼 수 있기 때문에 좋지 않다.
뒤에 iv 붙은 이유 : 초기화 벡터 공격 때문에
나중에도 말하겠지만 crypto-js 를 통해 남이 만들어둔 암호화 방법으로 하는것을 추천 )
(결과로서 보면 암호화 복호화를 둘다 가능하다. )
=> key 들이 많으면 관리가 힘들기 때문에 AWS KMS (key management service) 를 사용하기도 한다.
(코드를 수정해야하는데 기존코드를 지우기 어려운 경우 (그 코드를 쓰고 있는 유저들의 프로그램이 고장나는 경우)
deprecated로 함수를 감싸면 그 함수를 쓸 때마다 경고창이 뜬다.
버전을 올릴때 deprecated 관련된 함수를 없애는것
node에서 promise 를 하지 않고 그냥 callback 함수인 함수들이 남아 있다. asnync 사용 불가능한 함수들, 그 함수들을 promisify 로 감싸주면 위와 같이 promise .then , .catch 를 붙일 수 있게된다. .await을 쓸 수도 있는 것이다.
단 조건 callback 함수가 (error, data)=>{} 형식이어야 한다.
node 에서는 callback 들이 이런 식으로 되어 있기는 하다.)
(Node.js에서 콜백 함수(callback function)는 비동기 작업이 완료되었을 때 호출되는 함수입니다. 비동기 작업은 일반적으로 파일 읽기, 데이터베이스 쿼리 실행, HTTP 요청 등과 같은 I/O 작업이나 타이머에 의한 작업을 포함합니다.)