[node.js] 양방향 암호화 실습
양방향 암호화
암호화 할 때 키를 사용해서 암호화하는 방식으로 복호화가 가능
암호화 할 때 사용한 키 와 복호화 할 때 사용한 키가 같아야만 복호화가 가능.
동일한 데이터를 암호화 했을 때 암호화된 결과가 다를 수 도 있음.
이 데이터는 비교 연산을 잘 하지 않고 복원해서 사용하는 경우가 대부분.
일반 데이터 암호화에 이용.
[암호화]
createCipheriv(알고리즘, 키, 초기화벡터): 양방향 암호화 객체 생성
암호화 객체.update(암호화 할 문자열, 문자열 인코딩 방식 - utf8, 출력 인코딩 방식 - base64): 문자열이 리턴됨
암호화 객체.final(출력 인코딩 방식): 암호화가 완료
[복호화]
createDeccipheriv(알고리즘, 키, 초기화 벡터): 양방향 복호화 객체 생성 - 암호화 할 때 사용한 것을 그대로 대입
복호화 객체.update(복호화 할 문자열, 문자열 인코딩 방식 - utf8, 출력 인코딩 방식 - base64): 문자열이 리턴됨
복호화 객체.final(출력 인코딩 방식): 암호화가 완료
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
const crypto = require("crypto");
const algorithm = "aes-256-cbc";
//알고리즘은 정해진 알고리즘을 이용해야하고,
//노드의 crypto 모듈에서는 key32자리, iv16자리
const key = "12345678901234567890123456789012";
const iv = "1234567890123456";
//암호화 객체 생성
let cipher = crypto.createCipheriv(algorithm, key, iv);
let result = cipher.update("01011332245", "utf8", "base64");
result += cipher.final("base64");
//더하기 할당 왜하는거지? 궁금하다.... 낼 물어봐야지
console.log(result);
let decipher = crypto.createDecipheriv(algorithm, key, iv);
let result2 = decipher.update(result, "base64", "utf8");
result2 += decipher.final("utf8");
// 암호화 할때랑 복호화 할 때
//인코딩 방식과 출력 인코딩 방식의 위치 바뀐다는 사실 까먹지 말것!
console.log(result2);
|
cs |
-----------------------참고 사이트
[ 암호화 ] cipher 학습해 보면 이거 저거 용어 (대칭형,공개키,des,aes,cbc,iv..) 작성중...
http://suite.tistory.com 2013.06 fs 그동안 인코딩 관련해서 base64, urlencode, md5 나 경험하다가 암호화 Algorithm (알고리즘? 알고리듬?) 개발은 아니고 openssl 라이브러리를 사용해보기 위해 학습해 보았다. 구
suite.tistory.com