정미나닷컴

[Java] 자바 데이터 암호화: DES, 3DES, RSA, AES, MD5, SHA1 본문

IT

[Java] 자바 데이터 암호화: DES, 3DES, RSA, AES, MD5, SHA1

정미나 2011. 4. 18. 14:57

* 스트림 암호화 방식
: Clear text를 encode한 것을 1문자씩 변환

* 블럭 암호화 방식
: Clear text를 정해진 블럭으로 나눈후 해당 블럭을 암호화

* 대칭키 암호화 방식
: 암호화 키와 복호화 키가 동일

* 비대칭키 암호화 방식
: 암호화키는 공개키, 복호화키는 비밀키, 대칭 암호화에 비해 속도가 느림
  주로 개인키를 교환하는 목적으로 많이 사용

A와 B가 Data를 주고 받는다고 할때
A와 B 각각이 공개키/개인키 한쌍씩을 가지고 있으면서
서로에게 공개키만 알려줌

A -> B Data 전송시
A는 B의 공개키로 Data를 암호화시켜서 B에게 전송
Data를 받은 B는 자신의 개인키로 Data를 복호화
B는 A의 공개키로 return값을 암호화시켜서 A에게 전송
return값을 받은 A는 자신의 개인키로 return값을 복호화

* 메시지 다이제스트
: 원문에 일방향 해쉬 함수를 적용, 일정 길이의 유일한 문자열로 변환하는 방식
  복호화 불가능, 전자서명시 사용


- DES
블럭 암호화 방식, 대칭키 암호화 방식
텍스트를 64bit 단위로 나눠 56bit 키로 암호화하는 알고리즘

- 3DES
DES의 짧은 키를 보완한 방식(DES를 세번 적용)

- RSA
블럭 암호화 방식, 비대칭키 암호화 방식
두 개의 큰 소수들의 곱과, 추가 연산을 통해 키 생성
가장 보편적으로 사용

- AES
블럭 암호화 방식, 대칭키 암호화 방식
텍스트를 128bit 단위로 블럭화
128bit, 182bit, 256bit의 키로 암호화

- MD5
블럭 암호화 방식, 메시지 다이제스트
임의의 길이의 입력데이터를 128bit의 출력데이터로 변환
512비트 단위로 알고리즘 수행, 메시지 길이를 512bit 배수로 패딩
단, 원래의 메시지 길이 입력을 위한 64bit는 남겨둬야함

- SHA1
블럭 암호화 방식, 메시지 다이제스트
임의의 길이의 입력데이터를 160bit의 출력데이터로 변환