암호화
- 데이터베이스 관리자가 DB에 저장된 사용자의 개인 정보를 볼 수 있는 위험성이 있음
- 암호화해서 저장해야 함
단방향성 암호화
- 암호화 후, 복호화 못 함
- MD5
- 글자를 64 크기나 128 크기 글자로 암호화함
- 크기가 제한되어 있기 때문에 다른 글자가 같은 글자로 암호화되어 중복될 가능성 있음
- SHA-256, SHA-512 등
▽ 예제 코드 1 ▽
import java.math.BigInteger;
import java.security.MessageDigest;
public class EncryptionExam {
// 64 크기
public static String getSHA256(String input){
String toReturn = null;
try {
MessageDigest digest = MessageDigest.getInstance("SHA-256");
digest.reset();
digest.update(input.getBytes("utf8"));
// 숫자 부분이 글자 크기 설정임
toReturn = String.format("%064x", new BigInteger(1, digest.digest()));
} catch (Exception e) {
e.printStackTrace();
}
return toReturn;
}
// 128 크기
public static String getSHA512(String input){
String toReturn = null;
try {
MessageDigest digest = MessageDigest.getInstance("SHA-512");
digest.reset();
digest.update(input.getBytes("utf8"));
toReturn = String.format("%0128x", new BigInteger(1, digest.digest()));
} catch (Exception e) {
e.printStackTrace();
}
return toReturn;
}
public static void main(String[] args) {
System.out.println(getSHA512("Hello"));
System.out.println(getSHA512("Hello"));
System.out.println(getSHA512("A"));
System.out.println(getSHA512("B"));
System.out.println(getSHA512("C"));
}
}
▽ 출력 결과 ▽
3615f80c9d293ed7402687f94b22d58e529b8cc7916f8fac7fddf7fbd5af4cf777d3d795a7a00a16bf7e7f3fb9561ee9baae480da9fe7a18769e71886b03f315
3615f80c9d293ed7402687f94b22d58e529b8cc7916f8fac7fddf7fbd5af4cf777d3d795a7a00a16bf7e7f3fb9561ee9baae480da9fe7a18769e71886b03f315
21b4f4bd9e64ed355c3eb676a28ebedaf6d8f17bdc365995b319097153044080516bd083bfcce66121a3072646994c8430cc382b8dc543e84880183bf856cff5
848b0779ff415f0af4ea14df9dd1d3c29ac41d836c7808896c4eba19c51ac40a439caf5e61ec88c307c7d619195229412eaa73fb2a5ea20d23cc86a9d8f86a0f
3d637ae63d59522dd3cb1b81c1ad67e56d46185b0971e0bc7dd2d8ad3b26090acb634c252fc6a63b3766934314ea1a6e59fa0c8c2bc027a7b6a460b291cd4dfb