본문 바로가기

IT/Java

자바 리플렉션(Java Reflection) /* written by kaspy (kaspyx@gmail.com)*/ 자바 리플렉션(Reflection)이란 컴파일된 자바 코드에서 역으로 클래스를 불러서 메소드(Method) 및 변수(Field)를 구해오는 방법으로 클래스를 동적 로딩하여 사용할때 많이 사용되고 디컴파일할때에도 자주 사용되는 기법이다. 1. 리플렉션(Reflection) 기본 예를들어 아래와 같이 Class가 있다고 하면 생성자(Constructor)도 있을것이고, 필드(Field) 및 메쏘드(Method)도 있을것이다. vi MyClass.java public class MyClass{ private static String myName = null; public String pubString = null; private void.. 더보기
자바(Java)로 구현한 RSA 암호학 알고리즘 예제 /* written by kaspy (kaspyx@gmail.com)*/ RSA는 대단히 수학적인 알고리즘으로 200자리가 넘어가면 슈퍼컴퓨터로 푸는데만해도 1만년이상이 걸린다고 한다. 알고리즘은 두개의 소수 p,q 그리고 (p-1)*(q-1)의 서로소 d를 구하고 p,q,d는 비밀키로 개인이 보관(유출금지)한다. 그리고 p*q 의값 n과 e * d % (p-1)(q-1) = 1을 만족하는 e를 구한다. n과 e는 공개키로 외부에게 공개할수있다. p = 11, q = 17, d = 23e = 7, n = 187 메시지가 m이라고 할때 암호화 c = ( m ^ e ) % n 복호화 d = ( c ^ d) % n 로 구할수있다. 큰 숫자를 다뤄야하는 특성상, 자바 자료형 BigInteger를 사용하여 구현하.. 더보기
Java로 달력(Calendar) 구현하기 /* written by kaspy (kaspyx@gmail.com)*/ 아래는 Java로 달력을 구현한 소스코드이다. 2개파일로 나뉘었고, 주석에 자세한 설명을 해놨으니 복붙해서 봐도될듯하다.1980년 1월 1일(화요일)을 기준으로 지정해준 날짜까지(윤년 포함) 총합을 계산한다 그리고 7로 나눠서 요일을 구한다. 끝 Calender.java public class Calender { //미리 기준 연도와 , 기준월을 정해서 출력하는 방법을 선택함. int base_year = 1980; // 기준 연도 int base_month = 1; // 기준 월 입니다. 실제로는 1980년 1월 1을 기준으로 계산 int total_sum = 0; // 기준 년과 월에서 입력받은 날짜까지 총 일수를 여기에 저장 .. 더보기