JAVA 암호화 2

JDK8에서 SHA512 암호화/해시화 구현하기

들어가며 외부 API 통신 중 검증 데이터를 해시화하여 비교하는 유효성 로직이 있었다. 대부분 SHA방식은 단방향 암호화 방식이기에 민감정보를 DB에 저장할 때 사용하거나, API 간 데이터 검증에서 사용된다. 본인은 후자의 방법으로 사용하였다. 예를 들면 A사의 이름, 연락처, 이메일 정보를 B사에 전달하여 해당 데이터에 맞는 고객정보가 있는지 조회하는 API가 있다고 하자. 별도의 VPN을 통해 데이터를 주고받을 수도 있지만 비용과 시간의 제약 안에서 현실적인 해결 방법은 데이터의 암호화 및 유효한 통신 주체인지 확인할 수 있는 검증 데이터를 사용하는 선택을 한다. 그래서 API 필드 중 "이름+연락처+이메일” 정보를 묶어 SHA로 해시화하고 비밀키로 AES 방식으로 한번 더 암호화하였다. 이를 ch..

Development/Java 2022.04.22

JDK8에서 AES 암/복호화 구현하기

들어가며 이번 프로젝트에서 A사이트의 암호화된 사용자 정보를 바탕으로 로그인을 연동시키는 기능을 구현했다. 이때 AES, SHA 방식 모두 사용하게 되었고 이참에 자세히 기록하기 위해 글을 적는다. AES 암호화란? 암호화 방식은 아래와 같이 구분할 수 있다. 먼저 복호화가 가능한지에 따라 양방향 / 단방향으로 구분되고, 복호화할 때 사용하는 비밀키가 암호화할 때 그대로 사용되면 대칭키, 서로 다른 키를 사용하면 비대칭키가 된다. AES 알고리즘은 복호화가 가능하며, 동일한 비밀키로 암/복호화를 하기 때문에 대칭키 알고리즘이 된다. 코드로 만들어보기 JDK8을 이용해서 개발했고 별도의 라이브러리는 없이 내장된 클래스만 사용하였다. 이렇게 자바 버전을 강조하는 이유는 JDK 11 버전부터는 Datatype..

Development/Java 2022.03.30