본문 바로가기

Java

handshake_failure 오류 해결하기 개인정보 때문에 API URL호출을 Server에서 하게 작업을 진행하였다. 작업 후 오류 코드가 나와서 정리해보려고 한다. 1. System.setProperty("https.protocols", "TLSv1,TLSv1.1,TLSv1.2"); 오류코드는 달랐는데 정확한 코드를 확인하려면 서버 롤백을 해야하는데 지금 할 수 없다... 검색해봐도 나와 동일한 오류코드가 확인이 안되서 패스... 관련 클래스 상단에 추가해주자... static { System.setProperty("https.protocols", "TLSv1,TLSv1.1,TLSv1.2"); } 2. JAR 추가 글을 쓰게 된 계기인 handshake_failure 오류. 검색해보면 TLS 버전문제로 발생한다고 되어있다. 오라클에서 JAR를.. 더보기
Static Import 에 대해 전자정부표준프레임웍을 점점 많은 곳에서 사용하는 것같아서 사용해보려고 설치를 했다. 근데... 내가 현재 사용하는 환경과 좀 다르다... 그래서 구조와 셋팅을 보려고 찾아보니 모르던 코드를 발견했다. 그것은 import static ... 이다.궁금해서 검색을 해보니 자바 1.5에서 추가된 기능이란다. 난 1.6부터 시작했는데... 왜 몰랐지.... 특징은 이렇다. 다른 클래스의 맴버 변수나 맴버 메서드를 경로를 생략하고 사용할 수 있다. Static Import 로 선언하기 위해서는 static으로 정의된 맴버여야한다. 예를 들어import static java.lang.Math.PI; 이렇게 선언했다고 하자. 위에서 보통은 static 빼고 맨 끝에 PI 도 없을 것이다. 일반적인 import문을 정.. 더보기
captcha를 만들어보자 captcha를 공부해보려고 여기저기 기웃거리다가 simple captcha로 한번 테스트 페이지를 만들어보려고 작업했다. 근데 문제가 텍스트는 아주 잘되는데 오디오는 방법을 잘 모르겠다. 그래서 좀 더 여기저기 기웃거리다 텍스트로된 것을 직접 만든 소스를 발견했다. 소스를 보니 생각보다 간단하게 작성이 됬다. 그래서 가져와서 조금 수정해보았다. 출처: http://zetcode.com/tutorials/jeetutorials/captcha/ import java.awt.Color;import java.awt.Font;import java.awt.GradientPaint;import java.awt.Graphics2D;import java.awt.RenderingHints;import java.awt.i.. 더보기
java.security.InvalidKeyException: Illegal key size 오류 암호화 테스트 중 java.security.InvalidKeyException: Illegal key size 오류가 났다.SHA256은 그냥 바로 되던데, AES256은 오류가 난다. 오류 코드를 검색해보면 바로 해결방법이 나오지만, 왜그런지 해결이 안됬다. 몇번의 삽질 끝에 원인을 찾았는데, 컴파일하는 jdk버전이 다른 버젼으로 맞춰져있었다... 이런 삽질은 고만 해야할텐데... 해결방법은 간단한데, 미국에서 일정 이상 암호화 기술은 수출금지를 시켰단다. 그래서 필요한 파일만 다운받아 사용하면 되는 것이다. 수출 금지인데 다운받으면 바로 해결되는 것도 좀 이상하긴 한데... 오라클 홈페이지에 가면 jar파일이 있는데 jdk 버전별로 다운 받아서 넣어주자. jdk가 설치된 경로 밑에 jre/lib/se.. 더보기
문자열 패턴 분석 정규식 비밀번호 패턴을 읽어 숫자 알파벳 대소문자 특수 문자를 사용했는지 분석하기 위한 소스가 필요했다. 기존에 만들어 저있는 것은 1바이트씩 비교해서 만든 것이라 좀 더 눈에 잘 들어오게 만들어보기위해 요즘 정규식을 이용해보고 있다.Pattern, Matcher 클래스를 이용하니까 간단하게 되서 참 편하다. 먼저 알파벳, 숫자, 특수문자를 구분하는 함수를 만들어보자.public static boolean isAlnumPunct(String str){boolean bResult = false;Pattern pt = Pattern.compile("[\\p{Alnum}\\p{Punct}]{1,}");Matcher mc = pt.matcher(str);if(mc.matches()){bResult = true;}ret.. 더보기
JAVA MessageDigest 클래스 SHA-256 암호화를 할 일이 생겨서 찾아보았다. JAVA POJO에서 기본적으로 나와있는 MessageDigest 클래스에서 지원을 한단다. MessageDigest는 MD5D와 SHA-1 그리고 SHA-256 등을 지원하는 듯하다. 사용법이 거의 같기 때문에 한가지만 보면 응용가능하다. 일딴 인터넷에 돌고 있는 셈플을 보자.public static String getSHA256(String str){String reCode = null;try{//MessageDigest 인스턴스 생성MessageDigest sha = MessageDigest.getInstance("SHA-256");//해쉬값 업데이트sha.update(str.getBytes());//해쉬값(다이제스트) 얻기byte byteData.. 더보기
에러 콘트롤러를 만들어 로그를 찍어보자 web.xml에 다음 코드를 추가하면 간단히 에러 페이지로 이동할 수 있다. 404 /error/error.html 500 /error/error.html 그런데 나는 error.html을 컨트롤러로 구현하여 로그를 찍어보고 싶었다. 에러코드, URI, 에러 메시지등.가능해보여서 찾다가보니 쉽게 나오지 않는다. 일반적인 방식이 아닌모양이다. 순수 자바로 구현한 예제를 찾았다.그렇게 해서 구현한 것이 다음과 같다.Throwable throwable = (Throwable)req.getAttribute("javax.servlet.error.exception");Integer statusCode = (Integer)req.getAttribute("javax.servlet.error.status_code");S.. 더보기