먼저 모듈을 불러오자.
먼저 password를 무찌로 해주고
이렇게 치면 해시화된 무찌가 나온다.
이렇게 짜잔 하고 나와준다.
여기서 sha512는 아직 취약점이 발견안되서 잘 쓰인다.
base64는 인코딩 방식이다. 이외에 hex, latin1이 있다.
# 소금을 쳐보자.
먼저 12자리 문자를 randomBytes로 생성해줌. txt에 저장이된다.
이걸 pbkdf2메서드에 비밀번호, 소금, 해시화횟수, 길이, 알고리즘 순으로 넣으면
소금친 비밀번호가 나오게 된다.
근데 이건 매번 node를 실행할때마다 새로운 소금이 생성되기때문에 소금친 비밀번호는 변하게된다.
만약 실제 서비스를 만든다고하면
소금을 기억해 놓으면 찾는 비번의 해시코드를 얻을 수 있다. 설명이 복잡하니 직접 써봄.
먼저 비밀번호를 무찌로 해줬다.
다음으로 소금을 쳐서 소금친비밀번호와 소금을 각각 출력해줘본다.
소금은 Ibh8머시기 머시기 이런다.
이 소금 스트링을 기억해준다.
그리고
소금스트링을 변수에 넣어준다음 crypto.pbkdf2에 또 넣어준다.
그럼 위에서 해당소금과 동일한 비밀번호로 생성된 소금친 비밀번호와 똑같은 해시코드가 나오게된다.
만약 실제 서비스를 만들려면 소금 해시코드도 db에 저장해놔야 될것이다.
++만약 여기서 10만번 반복이아니라조금이라도 바꾸면 다른 해시코드가 나온다.
#양방향 암호화
cipher 모듈을 사용할거다.
알고리즘, 키, iv를 다 만들어줘야하는데 중요한건
key는 32바이트, iv는 16바이트로 맞춰줘야한다.
글자수세주는걸로 하면됨.
암튼 이렇게 정해놨으면
무찌의 비밀인 정보를 personalInfo라는 변수에 담았다.
result에
위에 저장해둔 알고리즘 키값등등을 설정한 cipher로 돌려준 무찌의 비밀을 암호화시켜 담는다.
result를 뽑아오면 무찌의 비밀이 해시화된 코드가 뜬다.
이제 우리의 기억을 지우고 무찌의 비밀을 찾아보자.
일단 준비물은 아까 암호화된 코드. 저 방식으로 만든 무찌비밀의 해시코드는 아래와 같다
이 코드를 변수에 담자.
그리고 이 코드를 createDecipheriv에 담으면
짜잔~ 이렇게 무찌의 감춰진 비밀을 찾아낼 수 있다.
##################
암호화는 사실 알고는 있었지만 직접 해본적은 없다.
하도 단톡방에서 서버보안에 대한 겁을 많이줘서 ㅡㅡ 이상한데 꽂혀서 딴짓만 한듯.
사실 해시코드로 바꿔주는건 그리 어려운건 아닐거라 생각해서 공부 안한것도 있지만..
단순히 걍 함수에 파라미터로 비번넣고 이걸 알아서 얘가 해시코드로 바꿔주는거니까
해시화자체는 함수라는 개념만 알면 당연히 알수있는거같다.
'javaScript > nodeJs' 카테고리의 다른 글
노드js 내장모듈// fs 파일관리 시스템 -1 (0) | 2022.06.23 |
---|---|
노드js 내장모듈// process(spawn) 노드로 다른언어 실행시키기. (0) | 2022.06.23 |
노드js 내장모듈// url (0) | 2022.06.21 |
노드js 내장모듈// path (0) | 2022.06.18 |
첫글 테스트 (0) | 2022.06.18 |