Hash, 암호화, 복호화, encoding, decoding

김문성·2024년 3월 27일

해시와 암호화

-해시(Hash) : 단방향 암호화 기법
-Encryption : 양방향 암호화 기법

Hash는 평문을 암호화된 문장(텍스트)로 만들어주는 기능을 하고, Encryption은 평문을 암호화된 문장(텍스트)로 만들어주는 기능을 하고 암호화된 문장을 다시 평문으로 만드는 복호화 기능도 한다.
Hash 알고리즘은 특정 입력에 대해 항상 같은 해시 값을 리턴하기 때문에 해당 해시 값을 비교함으로써 같은 값인지를 알 수 있다. 이를 통해 데이터의 무결성 등을 검증할 수 있다.

암호화

-대칭키 : 암복호화에 사용하는 키가 동일한 암호화 방식
-공개키(비대칭키) : 암복호화에 사용하는 키가 서로 다르며 따라서 비대칭키 암호화 라고도 한다.

대칭키 암호화는 위에서 설명한 대로 암복호화 키가 동일하여 해당 키를 아는 사람만이 문서를 복호화할 수 있다. 공개키 암호화 방식에 비해 속도가 빠르다는 장점이 있지만 키 교환 과정에서 탈취될 수도 있고, 사람이 증가할 수록 전부 따로 키를 교환해야하기 때문에 관리해야할 키가 방대해진다. AES, SEED 등의 예시가 있다.

공개키는 앞선 대칭키 암호화의 문제를 해결하기 위해 등장한 것으로, 모든 사람이 접근 가능한 공개키가 있고 각 사용자만이 가지고 있는 개인키가 있다. client가 server에서 공개한 공개키로 암호화한 데이터를 보내면 server는 본인의 개인키로 해당 암호화된 데이터를 복호화하여 보는 것이다. 다만 대칭키에 비해 속도가 느리다고 한다. RSA, SHA256등이 있다.

인코딩/디코딩

인코딩과 암호화의 가장 결정적인 차이는 인코딩은 누가 못알아보게 만드는 것이 아니라 사용성을 좋게 하기 위함이다. 즉, 인코딩한 값은 당장은 알아보지 못할 지언정 디코딩해서 원래되로 되돌린다면 알아보기 쉽고, 누구나 디코딩할 수 있다. 인코딩/디코딩의 가장 대표적인 예는 UTF-8이나 Base64 등이 있다.

0개의 댓글