Java 알고리즘 추가하는 방법 2

자바알고리즘을 추가할일이 있을때를 이용하여 문서를 만들어봤다.
The Bouncy Castle에서 보안관련 lib소스를 받는다.
참조사이트 : http://www.bouncycastle.org/latest_releases.html
이유는 따로할수도 있지만 난 이 라이브러리에 추가하는 작업을 선택했다.
이유는 여러가지 사용을 위해서 소스수정을 했다.
License는 MIT 자유롭게 modify, copy, publish, distribute.. 등등 모두 가능

이문서는 나를위한 문서라서 너무 자세히는 없다.
추가 알고리즘
ARIA CBC 128 OID : 1.2.410.100001.1.20
ARIA CBC 192 OID : 1.2.410.100001.1.21
ARIA CBC 256 OID : 1.2.410.100001.1.22

알고리즘 추가시 수정해야 할 라이브러리 위치
1. 알고리즘 엔진 추가 : org.bouncycastle.crypto.engines
새로운 알고리즘을 추가한다. (기존 seed한국 암호화방식을 참조하여 추가한다.)

2. provider 추가하기 : org.bouncycastle.jce.provider.symmetric
새로 추가할 알고리즘에 provider작업을 한다.
KeyGeneratorSpi, CipherSpi ,AlgorithmParameterGeneratorSpi 상속을 받아서 구현해줘야 한다.
기존의 다른 provider작업한 내용을 참조하여 만든다.

3. provider 내용추가 : org.bouncycastle.jce.provider
BouncyCastleProvider파일에 private static final String[] SYMMETRIC_CIPHERS 안에 새로운 알고리즘을 추가한다.

4. jar파일로 만든다.

5. jarsigner -keysotre cms.key -storepass **** prov.jar alias 을 통해서 sun인증을 거친다.

6. jar파일을 java홈디렉토리의 jar/lib/ext에 추가한다.
그리고 jar/lib/security/java.security파일을 열고 security.provider.10=org.bouncycastle.jce.provider.BouncyCastleProvider 을 추가한다.

6. 추가한 알고리즘을 테스트한다.
Provider p = Security.getProvider("BC");
System.out.println("MyPro provider name is " + p.getName());
System.out.println("MyPro provider version # is " + p.getVersion());
System.out.println("MyPro provider info is " + p.getInfo());
cipher = Cipher.getInstance("ARIA/CBC/PKCS5Padding", "BC");
아무 이상없으면 새로운 알고리즘등록 완료

7. 테스트
// -e 인코딩 방식 1 : 디코딩 0 : 인코딩
// -c 인증서 위치
// -k 개인키 위치
// -r 복구 데이타 저장
// -x xml 파일 위치
ex) -c ../cms/kmCert.der -e 1 -k ../cms/kmPri.key -r ../cms/recovery.txt -x ../cms/recovery.txt

테스트 : cmd->java -jar TaxInvoiceEx.jar -c ../cms/kmCert.der -e 1 -k ../cms/kmPri.key -r ../cms/recovery.txt -x ../cms/recovery.txt

간단히 암호화,복화화 과정을 거쳐화 복호화 하는것 확인했다.

댓글

가장 많이 본 글