-
[JavaScript] Crypto 라이브러리를 이용한 암호화 알고리즘 이용하기Node.js/자바스크립트 기초 2024. 6. 25. 17:06반응형
Crypto 라이브러리를 이용한 암호화 알고리즘 이용하기
공개된 데이터 또는 통신 알고리즘을 관리할 때는 암호화 알고리즘을 이용하는 것이 중요합니다. 암호화란, 정보를 전달할 때 특별한 지식이 없는 경우 해독하지 못하도록 하는 보안 기법이랍니다. 예를 들어, 암호화된 데이터를 읽고 싶은 사용자는 지정된 암호화 키를 사용해 암호화된 데이터에 액세스해야 하지요. 많이 사용되는 암호화 알고리즘은 MD5, SHA, AES 등이 있습니다. 각 방식의 장단점과 알고리즘에 대해 관심이 있다면, 암호학 및 암호화 알고리즘에 대해 공부해 보시기 바랍니다.
crypto
이번에는 Node.js를 이용해서 손쉽게 암호화 및 복호화를 할 수 있도록 하는 Crypto 라이브러리에 대해 알아보겠습니다. 이 라이브러리는 다양한 암호화 알고리즘을 함수 한번 호출하는 방식으로 이용할 수 있도록 해 주기 때문에, 프로그래밍을 하는 노력을 최소화할 수 있는 유용한 라이브러리예요.
단방향 암호화
Crypto 라이브러리를 이용해서 암호화를 하는 간단한 방법은
crypto.createHash();
함수를 사용하는 방법입니다. 아래 예시 코드를 참조해서 해시 암호화 알고리즘, 대상 문자열, 인코딩 방식을 차례대로 지정해 주시면 됩니다. 예를 들어,MD5
알고리즘을 이용해서 '안녕하세요' 라는 문자열을 base64 인코딩 규격으로 암호화하는 코드는 아래와 같이 적을 수 있습니다. 이 방식의 암호화 기법은 암호화는 할 수 있지만, 복호화는 따로 할 수 없기 때문에 데이터의 원래 값을 알아내야 하는 상황에는 부적합합니다.const crypto = require("crypto"); // Import Library let encrypt_md5 = crypto.createHash('md5').update('안녕하세요').digest('base64'); console.log(encrypt_md5);
IJvrrj63Nj2bCApm+eMG7w==
양방향 암호화
만약, 암호화 및 복호화를 이용해서 데이터를 보안 전송해야 할 필요가 있다면
crypto.createCipheriv();
함수를 사용하는 아래 코드를 참고해 보시기 바랍니다.AES-256-CBC
알고리즘을 이용해서 특정 글자를 암호화 및 복호화하는 코드를 예시로 적어드릴게요. 이 알고리즘은 키와 초기화 벡터(iv)가 있을 경우, 이미 암호화된 문자를 복호화할 수 있는 코드입니다.const ALGORITHM = "aes-256-cbc"; const KEY = "qwertyuioplkjhgfdsazxcvbnmnbvcxz"; const IV = "zxcvbnmlkjhgfdsa"
// Encryption const CIPHER = crypto.createCipheriv(ALGORITHM, KEY, IV); let encrypt = CIPHER.update("절대로 밝혀지면 안되는 정보", "utf8", "base64"); encrypt += CIPHER.final("base64"); console.log(encrypt)
FfYYrHijyv0RVBKwowF7qJXJDFmz9GL31VFJhQVys/30p0EZa6kgYt7KDAxjVURx
// Decryption const DECIPHER = crypto.createDecipheriv(ALGORITHM, KEY,IV); let decrypt = DECIPHER.update(encrypt, "base64", "utf8"); decrypt += DECIPHER.final("utf8"); console.log(decrypt)
절대로 밝혀지면 안되는 정보
반응형'Node.js > 자바스크립트 기초' 카테고리의 다른 글
[Node.js] 자바스크립트로 파일 읽고 쓰는법 알아보기 (0) 2024.04.05 [JavaScript] URL 인코딩, 디코딩 알아보기 (0) 2024.04.03 [JavaScript] var, let, const의 차이를 이해하고 변수, 상수 선언하기 (0) 2024.04.02