[NODE] 📚 crypto 모듈 (단방향 / 양방향) 암호화 원리 & 사용법
암호화 종류 암호화를 하는 이유는 해당 정보가 중요하기 때문이다. 암호화에는 여러가지 방법이 있을 수 있다. 대표적으로 단반향과 양방향 암호 방식이 있는데, 단방향은 암호화할 수는 있어
inpa.tistory.com
위에 티스토리에 너무 정리가 잘 돼있어서 글 쓸게 없다!
단 주의할 점은
* 단방향 암호화
=> 단순하게 해시만 사용해서 암호화를 하면 절대 안 된다. 해커가 모든 암호에 대해 어떤 결과가 나올지 데이터베이스화 해두었다면, 결과만 보고도 원래 암호를 유추해낼 수 있기 때문이다. (이걸 레인보우 테이블이라고 부른다)
따라서 해커가 레인보우 테이블을 사용하지 못하게 하는 방법이 필요하다. salt, scrypt 등을 이용해 반복 복호화하는 방법을 통해 암호화해야한다.
--------------------------------- 단방향 암호화 개념 강의 & 실습!
단방향 암호화
암호화는 가능하지만 암호화된 문장을 이용해서 복호화(원래 문장을 찾아내는 것)하는 것은 불가능.
원본 데이터 와의 비교는 가능(동일한 문장을 암호화하면 동일한 결과가 만들어지기 때문).
해시 기법(문자열을 고정된 길이의 다른 문자열로 만드는 방식)을 주로 이용.
알고리즘으로는 md5, sha1, sha256, sha512 등이 사용되는데 md5 와 sha1은 취약점이 발견되서 거의 사용하지 않는데 안드로이드에서 가끔 sha1 알고리즘을 사용함.
블록 체인에서는 sha256 을 사용하다가 sha512 로 변환 중임.
비밀번호 저장이나 블록 체인에서는 단방향 암호화를 주로 이용.
createHash(알고리즘): 사용할 알고리즘 설정
update(문자열): 변환할 문자열을 설정
digest(인코딩 방식): 인코딩할 알고리즘을 설정하는데 주로 base64를 많이 사용
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
// 암호화 모듈 가져오기
const crypto = require("crypto");
password = "12345";
//단방향 암호화 수행
p1 = crypto.createHash("sha256")
.update(password).digest('base64');
console.log(p1);
let str = "12345";
p2 = crypto.createHash("sha256")
.update(str).digest('base64');
//동일한 문자열로 암호화를 동일한 결과를 생성하기 때문에 true
console.log(p1 === p2);
str = "123456";
p2 = crypto.createHash("sha256")
.update(str).digest('base64');
//false
console.log(p1 === p2);
|
cs |
---------사담
히히 재밌다.... 강사님 현업 상황도 잘 아시고 수업도 이해하기 쉽게 잘 알려주신다..
근데 나 뭔가 주객전도된 느낌이다.. 티스토리에 올리기 위해 공부하는 느낌..
그래도 하는 게 어디야 내일도 화이팅 동키드!
'카카오 클라우드 스쿨' 카테고리의 다른 글
| [node.js] 양방향 암호화 실습 (0) | 2022.11.16 |
|---|---|
| [node.js] Require 함수 (0) | 2022.11.16 |
| [HTML5] 세션 스토리지 구현해보기~ (0) | 2022.11.15 |
| [HTML5]WEB Storage - Session Storage & Local Storage (0) | 2022.11.15 |
| [GIT] repository에 수정파일 업데이트 하는 방법 (0) | 2022.11.15 |