본문 바로가기

개발

[펌] 암호화 모듈

펌글입니다.
출처 : http://www.taeyo.pe.kr/Forum/Content.aspx?SEQ=24568&TBL=TALK&PGN=1
 

암호화에는 대충 다음과 같은 방법들이 있어요.. * 인코딩 BASE64나 UUENCODE 방법 등이 있는데요.. 사실 이건 암호화가 아닙니다. 바이너리 데이터를 전송하기 위해 데이터를 변조하는 것 뿐이구요.. 공개된 알고리즘에 의해 누구나 원래 데이터를 알아낼 수 있습니다. * 해쉬 MD5, SHA1, SHA2 등의 방법이 있습니다. 다이제스트라고도 하는 것 같은데 기억이.. ^^; 하지만 이것도 엄밀히 말해 암호화는 아닙니다. 원래는 지금 보내는 메시지가 변조가 되었는 지 확인하기 위해 덧붙이는 데이터를 만들기 위한 방법입니다. 이 값으로 원래 값을 알 수는 없습니다. 수많은 값들에서 같은 해쉬값이 나올 수 있기 때문이죠.. 그래서 단방향 암호화라고도 할 수 있는데요.. 암호화하면 다시 풀수 없기 때문입니다. 로그인 비밀번호 암호화에 쓰이곤 합니다. 물론 그 수많은 값들중에서 그럴 듯한 것을 모아놓은 사전을 만들수는 있습니다. 참고로 MD5보다는 SHA1 이 더 안전하다고 알고 있습니다. * 단일키 암호화 여기서부터가 진짜 암호화이죠.. 단일키 암호화는 암호화키가 하나인 암호화입니다. 키값 하나로 암호화도 하고 암호를 풀기도 하는 거죠.. DES, TripleDES, AES 등의 방법이 있습니다. DES는 손쉽게 푸는 방법이 알려져있습니다. AES가 성능도 빠르고 아직까지 쉽게 푸는 방법이 알려져 있지 않아 권장되고 있습니다. * 복수키 암호화 개인키와 공개키 2개를 사용해서 암호화하는 방식입니다. RSA 알고리즘이 대표적인 방법입니다. 2개의 키를 가지고 있기 때문에 보안통신시 키값전달, 본인인증, 부인방지 등에 사용됩니다. 장점이 많지만 단점으로는 성능이 아주 안좋다는 겁니다.. 단일키 암호화 방법에 비해 100배정도 느릴 겁니다.