1. 단방향 (One-Way Hash)
- Encoding만 가능하고, Decoding은 불가능합니다.
- 한 번 변환된 값(해쉬 값)을 다시 원래 데이터로 복구할 수 없는 단방향 방식이다.
- 주로 검증의 용도로 사용됩니다.
- 입력된 데이터의 무결성을 확인하거나, 데이터가 변조되지 않았는지 검증하는 데 사용됨
- 전자 서명 위조 방지, 비밀번호 저장, 데이터 무결성 검증 등에 사용된다.
- 예: SHA-256, HMAC(JWT에서 사용하는 서명 방식) 등이 이에 해당된다.
2. 양방향 (Two-Way Encryption)
- Encoding과 Decoding이 모두 가능합니다.
- 데이터를 암호화한 후, 다시 복호화하여 원래 데이터를 복구할 수 있는 방식이다.
대칭키 암호화 (Symmetric Key Encryption)
- 하나의 열쇠(비밀 키)를 사용해 데이터를 암호화하고 복호화가 가능하다..
- 예: OAuth나 Kakao 로그인과 같은 인증 방식에서 대칭키를 사용하여 정보를 보호합니다.
- 즉 암호화를하고 복호화를 하는 주체가 같다.
비대칭키 암호화 (Asymmetric Key Encryption)
- 열쇠가 두 개(공개 키와 비밀 키)로 이루어진 암호화 방식입니다.
- 공개 키로 암호화하고, 비밀 키로 복호화하거나 그 반대로 수행할 수 있습니다.
- 데이터를 생성하는 주체와 이를 검증하는 주체가 다를 때 적합합니다.
- 예: RSA 암호화, 전자 서명의 공개 키/비밀 키 구조에서 사용됩니다.
- 예2:국가에서 카드를 발급해주고 그 카드를 받은 사람이 결제를 하면 결제를 한 장소에서는 이카드를 검증을 못한다 국가에 이카드를 요청해야 검증이 가능
3. Base64
- Base64 인코딩은 8비트 아스키 코드를 6비트 단위로 변환하는 인코딩 방식입니다.
- 아스키 코드는 8비트로 표현되며, 총 256가지의 경우의 수(2^8)를 가집니다.
- Base64는 데이터를 6비트 단위로 처리하여 64가지의 경우의 수(2^6)를 가집니다.
- 양방향으로 인코딩/디코딩이 가능합니다.
- Base64로 인코딩된 데이터는 다시 디코딩하여 원본 데이터를 복원할 수 있습니다.
- 파일, 이미지와 같은 바이너리 데이터를 텍스트로 변환해 전송할 때 사용됩니다.
- 예: JSON 데이터에 이미지를 포함하여 API 통신에서 데이터를 주고받을 때 활용할 수 있습니다.
4. JWT (JSON Web Token)
- JWT의 **헤더(Header)**와 **페이로드(Payload)**는 Base64URL로 인코딩됩니다.
- Base64 인코딩과 유사하지만, URL에서 안전하게 사용되기 위해 특수 문자를 제거한 방식입니다.
- 이 인코딩된 헤더와 페이로드는 누구나 쉽게 디코딩하여 내용을 확인할 수 있지만, **서명(Signature)**을 통해 토큰의 무결성을 검증합니다.
- JWT 서명(Signature) 부분은 단방향 해쉬(예: HMAC512)를 사용하여 생성됩니다.
- 이는 데이터의 위변조 여부를 확인하기 위한 용도로 사용되며, 서명 값은 복호화할 수 없습니다.

요약

- 단방향: 데이터를 한 방향으로만 변환하며, 검증에 사용되고 복호화는 불가능합니다. (예: 해쉬, 전자 서명)
- 양방향: 데이터를 암호화한 후 복호화할 수 있으며, 대칭키와 비대칭키 방식이 있습니다. (예: RSA, 대칭키 암호화)
- Base64: 양방향으로 인코딩/디코딩 가능한 방식으로, 파일이나 이미지를 텍스트로 변환해 전송할 때 주로 사용됩니다.
- JWT: 헤더와 페이로드는 Base64로 인코딩되고, 서명은 단방향 해쉬를 사용해 검증에 활용됩니다.
Share article