JAVA/Java: 149개의 글
jdk 설치 환경변수 설정 JAVA 프로그램을 개발하기 위해서는 JAVA 개발 툴인 JDK 와 JVM(Java Virtual Machine)을 지원하는 Jre 를 설치하고 셋팅해야 한다. JDK 와 JRE 를 다운 및 설치부터 환경변수 설정까지 순서대로 따라가보자. 설치 및 셋팅 일시 : 2013.11.01JDK Version : jdk1.7.0_45 (현재 일자 최신 버전) JDK 는 자바 홈페이지에서 다운 받을 수 있다. http://www.oracle.com/technetwork/java/index.html 홈페이지에 들어가면 아래 화면에서 Java Downloads 를 클릭한다. Java 다운로드 버튼을 클릭한다. 현재 최신버전은 JDK 7u45 이다. Accept License Agreement..
블록 암호화에서의 운영 모드 이미지의 출처는 위키피디아 입니다. (http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation) 1. ECB (Electronic Code Block) Mode - 가장 단순한 모드로 블록단위로 순차적으로 암호화 하는 구조이다. - 한개의 블록만 해독되면 나머지 블록도 해독이 되는 단점이 있다. (Brute-Force Arttack, Dictionary Attack) - 암호문이 블록의 배수가 되기 때문에 복호화 후 평문을 알기 위해서 Padding을 해야한다. - error propagation : 각 블록이 독립적으로 동작하므로 한블록에서 에러가 난다고 해도 다른 블록에 영향을 주지 않는다. 해당 블록까지 에러 전파. 2..
AES 128 비트 암호화 / 복호화 ECB 모드
스프링에서 사용자(client) IP 가져오기 클라이언트의 IP 주소는 HttpServletRequest에 있는 getRemoteAddr( ) 메서드를 이용하여 알아낼 수 있다. 그러나 Proxy, Caching server, Load Balancer 등을 거쳐올 경우 getRemoteAddr( ) 를 이용하여 IP 주소를 가지고 오지 못하게 된다. 이럴경우 별도의 처리를 해주어야 한다. private String getIp(HttpServletRequest request) { String ip = request.getHeader("X-Forwarded-For"); logger.info(">>>> X-FORWARDED-FOR : " + ip); if (ip == null) { ip = request.ge..
자바랑 MSSQL연동 때문에 몇시간을 보낸건지...설정해줘야할 자잘한 것들이 너무 많다. 1.MSSQL JDBC 드라이버 받기. http://www.microsoft.com/ko-kr/download/details.aspx?id=11774 위 링크에서 exe 파일을 받은 후 풀고싶은데다 압축을 푼다. 2. lib에 다운받은 압축파일 추가 하기 압축을 푼 파일을 보면 \sqljdbc_2.0\enu 안에 sqljdbc.jar 과 sqljdbc4.jar이 있는데 얘네를 lib에 추가해줘야 한다.sqljdbc.jar 과 sqljdbc4.jar의 차이는 jre와 jdk의 버전 차이다. jre6.0이상이라면 sqljdbc4를 써야한다.만약 버전이 뭔지 모르겠다면 그냥 아무거나 해본다. 자바가 버전 안맞다고 어떤거 ..
중복 로그인을 체크하는 로직을 구현하는 미션이 프로젝트 마지막 단계에 주어졌다. 중복 로그인했을 때 먼저 로그인한 사용자가 세션 아웃 되는 것을 표준으로 정하였다. 이 때 최종 접속자의 IP와 로그인시각을 안내 받아야 한다는 전제조건이 있다. 스프링에서 제공하여 security 기능을 이용하여 구현해 보고자 했으나 생각대로 잘 되지 않았다. 스프링 설정으로 중복 로그인을 체크할 수는 있었으나 최종 접속자의 IP와 접속시각을 보여주고자 하는 곳에서 난관을 만났다. 세션이 invalid 되었기 때문에 세션아이디를 비롯한 사용자아이디, 접속IP등 세션에 보관되어 있는 정보가 싸그리 사라져 버린 상황이었기 때문이다. 그래서 결국 로그인 히스토리를 보관하고 있는 테이블에서 정보를 추출하여 중복로그인을 체크하도록 ..
전화를 이용하여 PC 통신을 사용해본 사용자들이라면 하나의 아이디를 가지고 동시에 서비스에 접속하고자 할 때 한 사용자가 서비스가 중지되는 동시접속 방지의 기능을 본 적이 있을 것이다. 그러나 인터넷의 회원제 사이트에서는 이런 기능들을 찾아보기 힘들 것이다. 인터넷이라는 특성상 강제로 클라이언트를 종료하기 위 한 기능들이 부족하기 때문이다. 그렇지만 실제 상용의 서비스를 하는 사이트라면 한번씩은 이 문제에 대해 서 고민을 하게 된다. 만일 인터넷에서 동시접속을 방지하고자 한다면 어떻게 하면 좋을까? 지금부터 그 방법 을 공개하도록 하겠다. 1) 동시접속 방지의 밑그림 인터넷상에서 동시접속을 방지하고자 하면 어떤 알고리즘을 이용하면 가능할까? 지금부터 동시접속 방지를 위한 밑그림을 그려보겠다. 우선 홈페이..
Oracle JDK와 OpenJDKJava 애플리케이션을 실행하기 위해서는 JVM이 필요하고 컴파일하기 위해서는 JDK가 필요하다. 일반적으로 JDK를 설치하면 JVM(Hotspot이라고도 표현, Java 기술의 핵심)도 함께 설치된다. JDK는 2개 버전으로 나뉜다. 하나는 폐쇄적인 상업 코드 기반의 Oracle JDK이고 하나는 오픈 소스 기반의 OpenJDK이다. 둘 간의 큰 차이라면 Oracle JDK는 OpenJDK에는 없는 재산권이 걸린 플러그인을 제공한다. 해당 플러그인은 Oracle이 재산권을 보유하고 있다. (보다 정확히 설명하면 Oracle이 인수하여 없어진 Sun Microsystems 시절의 유산이다.) [관련 링크] Oracle JDK에 존재하고 OpenJDK에는 없는 대표적 기능..
메서드 를 선언 할 때 throws를 사용하여 처리를 하게되면 해당 예외상황이 일어났을 때 '기본적인 예외상황 처리'가 수행된 후 프로그램이 종료된다. 그런데 try{ }catch(){ } 를 사용했을 경우에는 프로그램 실행중에 예외상황이 발생하면 catch문을 실행하고 프로그램이 종료되는것을 설정할 수 있다. 즉, 프로그램을 안죽이고 계속 아래구문을 수행하는 것이 가능하다. 물론 프로그램이 종료되도록 수행하는 것도 가능하다. 예제) - try catch 구문 사용 - public class ExceptionTest1 { public static void main(String[]args){ int a=10; int b=0; int c=0; try{ c=a/b; }catch(NumberFormatExcep..