암호화 종류 - 단방향
● 데이터 무결성을 검증하는 데 주로 사용되며, 패스워드 저장 등에서도 활용
● 단방향이므로 원본 데이터를 복원하는 건 불가능
● 동일한 데이터에 대해서는 항상 동일한 해시 값이 생성됨
- 서로 다른 데이터에 대해서도 같은 해시 값이 나올 수 있음
● 미세한 데이터 변화에서도 해시 값은 완전히 다르다.
● 주로 해시 함수(MD5, SHA-1, SHA-256 등)을 사용하여 구현
해시(Hash)
● 해시(Hash) : 해시 함수에 의해 얻어지는 값
● 해시 함수(Hash Function) = 해시 알고리즘
● 임의의 크기의 데이터를 고정된 크기의 데이터로 변환하는 함수
● 키(key) : 매핑 전 원래 데이터 값
● 해시 값(hash value) : 매핑 후 데이터 값
● 해싱(hashing) : 매핑하는 과정
해시함수(해시알고리즘)
SHA-256 (Secure Hash Algorithm 256-bit) |
● 256비트 해시 값, 충돌 저항성 및 보안성 높음 ● 많은 애플리케이션에서 데이터 무결성 검증이나 디지털 서명에 사용 |
SHA-512 (Secure Hash Algorithm 512-bit) |
● 512비트 해시 값, 충돌 저항성 및 보안성 높음 ● 더 큰 해시 값을 생성하기 때문에 좀 더 안전한 알고리즘 |
MD5 (Message Digest Algorithm 5) - 현재 사용하지 않음 |
128비트 해시 값, 충돌 저항성 약함 |
SHA-1 (Secure Hash Algorithm 1) - 현재 사용하지 않음 |
160비트 해시 값, 충돌 저항성 약함 |
Node JS에서의 암호화
1. 암호화 알고리즘 패키지를 설치한다. |
npm install crypto |
2. 암호화 알고리즘을 불러온다. |
const crypto = require('crypto'); |
3. 내부 명령어로 해시 코드를 설정하고 암호화한 정보를 DB에 저장한다. |
![]() |
Crypto 패키지의 함수 종류
이름 | 의미 |
createHash(algorithm) | 지정한 해시 알고리즘을 사용하여 해시 객체를 생성 |
pbkdf2Sync(password, salt, iterations, keylen, digest) | 비밀번호 기반 키 도출 함수를 동기적으로 실행?? |
createCipheriv(algorithm, key, iv) | 대칭키 암호화와 복호화를 위한 객체를 생성 |
createDecipheriv (algorithm, key, iv) | |
update | 암호화할 문자열을 전달함 |
digest | 해시를 만들때 사용하는 인코딩 방식을 결정함 base64 : 64개의 가능한 문자로 데이터를 인코딩하는 방식 64개의 문자 중 62개는 영문 대소문자와 10진수의숫자로, 나머지 2개의 문자는 인코딩과 디코딩 과정에서 추가적인 문자로 사용함 hex : 16진수 인코딩 16진수? 각 숫자는 0-9까지는 숫자로, 10~15까지는 a부터 f까지의 문자로 구성됨 |
해시 함수 한계! 레인보우 테이블
해시 함수를 사용해 만들어낼 수 있는 값들을 대량으로 저장해놓은 표인데, 주로 해시 함수를 사용하여 암호화된 비밀번호를 역추적하기 위해 사용됨 |
1) Salt : 입력한 값에 salt라는 특정 값을 붙여 변형시키는 것 |
2) 해시 함수 반복 : 여러번 해시 함수를 돌려 본래의 값을 예측불가능하게 만드는 것 |
pbkdf2Sync(password, salt, iterations, keylen, digest)의 사용법
주로 사용자 비밀번호를 저장하는데 사용됨 |
Crypto 방식의 검증
Crypto 는 단방향 알고리즘이기 때문에 복호화가 불가능, 입력한 값과 동일한 알고리즘을 이용해 다시 암호화를 해 비교 |
암호화 종류(양방향)
● 데이터의 기밀성을 유지하거나 안전한 통신을 위해 사용
● 공개키와 대칭키 암호화를 조합하여 데이터 보안을 유지하면서 처리 속도를 향상
● HTTPS와 같은 프로토콜로 클라이언트 - 서버 통신을 보호하여 안전한 웹 통신을 제공
Bcrypt 암호화
● 비밀번호를 암호화하는 알고리즘의 하나로 Blowfish 암호를 기반으로 설계된 암호화 함수이자 패키지 |
● 현재까지도 사용 중인 가장 강력한 매커니즘임과 동시에 해싱이 느리고 비용이 많이 드는 단점이 존재함 |
● 강력한 보안이 필요할 때 적합함. |
Bcrypt 암호화의 사용방법
1. Bcrypt와 관련된 패키지를 설치한다. |
npm install bcrypt |
2.require를 사용하여, node js 서버에서 bcrypt를 불러온다. |
const bcrypt = require('bcrypt'); |
3. 명령어를 이용해서 암호화 설정을 한다. |
![]() |
'국비지원 공부 정리 > 네트워크 공통' 카테고리의 다른 글
Socket.io의 기본적 사용법 (0) | 2025.03.29 |
---|---|
TCP/IP 와 WebSoket (0) | 2025.03.29 |
서버구축 (0) | 2025.03.28 |
환경변수? (0) | 2025.03.28 |
Cookie, Session (0) | 2025.03.27 |