com.sds.acube.bpm.framework.api
Class SecretProcessor

java.lang.Object
  extended by com.sds.acube.bpm.framework.api.SecretProcessor

public class SecretProcessor
extends java.lang.Object

SecretProcessor.java 암호화 관련 BPM API(개발자가 독립적으로 쉽게 사용할 있도록 제공함)
[주의] 이 파일만 독립적으로 사용할 수 있도록 properties 파일은 읽지 말것
[주의] 이 파일만 독립적으로 사용할 수 있도록 다른 bpm 클래스(ProcessorException등)는 참조하지 말것
[주의] 간단하게 사용할 수 있게 jdk 이외 lib는 사용하지 말것(jdk1.4부터는 별도의 jce lib 필요X)

Since:
2010.02.03
Version:
1.0.0.0 Copyright 2008 Samsung SDS Co., Ltd. All rights reserved.
Author:
LEE IL YONG

Field Summary
static boolean ErrorPrintFlag
           
static boolean SunProviderFlag
           
 
Constructor Summary
SecretProcessor()
           
 
Method Summary
static java.lang.String base64Decode(byte[] arrText)
          Base64 디코딩 함수
static java.lang.String base64Decode(java.lang.String text)
          Base64 디코딩 함수
static byte[] base64DecodeToByteArray(byte[] arrText)
          Base64 디코딩 함수
static byte[] base64DecodeToByteArray(java.lang.String text)
          Base64 디코딩 함수
static java.lang.String base64Encode(byte[] arrText)
          Base64 인코딩 함수
static java.lang.String base64Encode(java.lang.String text)
          Base64 인코딩 함수
static char[] base64EncodeToCharArray(byte[] arrText)
          Base64 인코딩 함수
static byte[] compressString(byte[] arrByte)
          문자열을 압축하는 함수
static byte[] compressString(java.lang.String text)
          문자열을 압축하는 함수
static java.lang.String decodeByAES128(java.lang.String text, java.lang.String key)
          AES 방식의 128 bit 복호화(디코딩) 함수 - 암호화 레벨 높음(아직까진 약점이 노출되지 않아 안전하다고 할 수 있음)
[주의] 이 함수는 key가 잘못되거나 본문에 이상이 있으면 오류를 던짐.
static java.lang.String decodeByAES256(java.lang.String text, java.lang.String key)
          AES 방식의 256 bit 복호화(디코딩) 함수 - 암호화 레벨 높음(아직까진 약점이 노출되지 않아 안전하다고 할 수 있음)

[참고] 256 bit AES 암호화를 사용하려면 unlimited jurisdiction policy files을 SUN에서 다운로드(https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/ViewProductDetail-Start?
static java.lang.String decodeByDES(java.lang.String text, java.lang.String key)
          DES 방식의 복호화(디코딩) 함수 - 암호화 레벨 높지 않음
[주의] 이 함수는 key 비교 능력이 없음(즉 key가 잘못되도 오류가 안남, 대신 깨진 문장이 리턴되는 구조임)
[주의] 즉, 오류없이 결과가 리턴되었다고 해서 그것이 원문이라는 보장은 없음.
static java.lang.String decodeSimple(java.lang.String text)
          간단한 복호화 함수(유출되어도 크게 지장없는 짧은 문장을 암호화할 때 간단하게 사용할 수 있음)
(원본 여부 기능 제공함)

[주의] 이 함수의 암호화는 보안성이 없으므로 사용에 주의할 것
[참고] 확실한 보안성이 필요한 경우엔 decodeByAES()를 사용할 것.
static java.lang.String decodeSimple(java.lang.String text, java.lang.String key)
          간단한 복호화 함수(유출되어도 크게 지장없는 짧은 문장을 암호화할 때 간단하게 사용할 수 있음)
(key 비교 기능 제공함.
static byte[] deCompressString(byte[] compressedMyByte)
          문자열을 압축 푸는 함수
static java.lang.String encodeByAES128(java.lang.String text, java.lang.String key)
          AES 방식의 128 bit 암호화(인코딩) 함수 - 암호화 레벨 높음(아직까진 약점이 노출되지 않아 안전하다고 할 수 있음)
[주의] 이 함수는 key가 잘못되거나 본문에 이상이 있으면 오류를 던짐.
static java.lang.String encodeByAES256(java.lang.String text, java.lang.String key)
          AES 방식의 256 bit 암호화(인코딩) 함수 - 암호화 레벨 높음(아직까진 약점이 노출되지 않아 안전하다고 할 수 있음)

[참고] 256 bit AES 암호화를 사용하려면 unlimited jurisdiction policy files을 SUN에서 다운로드(https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/ViewProductDetail-Start?
static java.lang.String encodeByDES(java.lang.String text, java.lang.String key)
          DES 방식(64bit)의 암호화(인코딩) 함수 - 암호화 레벨 높지 않음
[주의] 이 함수는 복호화시 key 비교 능력이 없음(즉 key가 잘못되도 오류가 안남, 대신 깨진 문장이 리턴되는 구조임)
[주의] 즉, 오류없이 복호화된 결과가 리턴되었다고 해서 그것이 원문이라는 보장은 없음.
static java.lang.String encodeSimple(java.lang.String text)
          간단한 암호화 함수(유출되어도 크게 지장없는 짧은 문장을 암호화할 때 간단하게 사용할 수 있음)
(원본 여부 기능 제공함)
[주의] 이 함수의 암호화는 보안성이 없으므로 사용에 주의할 것.
static java.lang.String encodeSimple(java.lang.String text, java.lang.String key)
          간단한 암호화 함수(유출되어도 크게 지장없는 짧은 문장을 암호화할 때 간단하게 사용할 수 있음)
(key 비교 기능 제공함.
static byte[] generateAES128Key()
          DES 방식의 암호화, key 생성 함수
[주의] key는 앞에 16byte까지만 같은면 같은 키로 인식하므로 16자(ASCII) 이내로 사용할 것.
static byte[] generateAES256Key()
          DES 방식의 암호화, key 생성 함수
[주의] key는 앞에 32byte까지만 같은면 같은 키로 인식하므로 32자(ASCII) 이내로 사용할 것.
static java.lang.String getClassLoadPath(java.lang.Class targetClass)
          해당 class가 로드된 경로(일반적으로 jar파일 위치) 알아오는 함수
static java.lang.String getJCELibPath()
          jce.jar 경로 알아오는 함수(jce.jar 버전에 따라 인코딩이 다를 수 있으므로 확인 후 사용할 것)
같은 jce.jar라고 해서 서로 다른 jce provider를 사용할 수 있으므로 사용에 주의할 것
같은 JVM instance 내에선 같은 값을 반환하므로 서로 호환성이 보장된다고 할 수 있음.
static void initSunJCEProvider()
          서로 다른 provider로 인해 알고리즘이 충돌하지 않도록 SUN JCE Provider로 통일시키는 함수
jdk\jre\lib\security\java.security 파일에 아래와 같이 선언한 것과 같음.
static void main(java.lang.String[] args)
           
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

ErrorPrintFlag

public static boolean ErrorPrintFlag

SunProviderFlag

public static boolean SunProviderFlag
Constructor Detail

SecretProcessor

public SecretProcessor()
Method Detail

encodeSimple

public static java.lang.String encodeSimple(java.lang.String text)
                                     throws java.lang.Exception
간단한 암호화 함수(유출되어도 크게 지장없는 짧은 문장을 암호화할 때 간단하게 사용할 수 있음)
(원본 여부 기능 제공함)
[주의] 이 함수의 암호화는 보안성이 없으므로 사용에 주의할 것.
[주의] text는 100미만을 권장함.
[참고] 확실한 보안성이 필요한 경우엔 encodeByAES()를 사용할 것.

Parameters:
text - 암호화할 대상 문자열
Returns:
String 암호화된 문장
Throws:
java.lang.Exception
Since:
2010.02.04 LEE IL YONG

encodeSimple

public static java.lang.String encodeSimple(java.lang.String text,
                                            java.lang.String key)
                                     throws java.lang.Exception
간단한 암호화 함수(유출되어도 크게 지장없는 짧은 문장을 암호화할 때 간단하게 사용할 수 있음)
(key 비교 기능 제공함. 원본 여부 기능 제공함)

[주의] 이 함수의 암호화는 보안성이 없으므로 사용에 주의할 것
[주의] text는 100미만을 권장함.
[참고] 확실한 보안성이 필요한 경우엔 encodeByAES()를 사용할 것.

Parameters:
text - 암호화할 대상 문자열
key - 암호키(일반 문장,ASCII 코드만 사용할 것,해독시 필요하므로 유출되지 않게 잘 관리할 것)
Returns:
String 암호화된 문장
Throws:
java.lang.Exception
Since:
2010.02.04 LEE IL YONG

decodeSimple

public static java.lang.String decodeSimple(java.lang.String text)
                                     throws java.lang.Exception
간단한 복호화 함수(유출되어도 크게 지장없는 짧은 문장을 암호화할 때 간단하게 사용할 수 있음)
(원본 여부 기능 제공함)

[주의] 이 함수의 암호화는 보안성이 없으므로 사용에 주의할 것
[참고] 확실한 보안성이 필요한 경우엔 decodeByAES()를 사용할 것.

Parameters:
text - encodeSimple()로 암호화된 문자열
Returns:
String 복호화된 평문
Throws:
java.lang.Exception - 원본이 아닐 경우 오류를 던짐
Since:
2010.02.04 LEE IL YONG

decodeSimple

public static java.lang.String decodeSimple(java.lang.String text,
                                            java.lang.String key)
                                     throws java.lang.Exception
간단한 복호화 함수(유출되어도 크게 지장없는 짧은 문장을 암호화할 때 간단하게 사용할 수 있음)
(key 비교 기능 제공함. 원본 여부 기능 제공함)

[주의] 이 함수의 암호화는 보안성이 없으므로 사용에 주의할 것
[참고] 확실한 보안성이 필요한 경우엔 decodeByAES()를 사용할 것.

Parameters:
text - encodeSimple()로 암호화된 문자열
key - 암호키(일반 문자열,암호화할 때 사용한 키)
Returns:
String 복호화된 평문
Throws:
java.lang.Exception - 원본이 아닐 경우 오류를 던짐. key가 다를 경우 오류를 던짐.
Since:
2010.02.04 LEE IL YONG

encodeByDES

public static java.lang.String encodeByDES(java.lang.String text,
                                           java.lang.String key)
                                    throws java.lang.Exception
DES 방식(64bit)의 암호화(인코딩) 함수 - 암호화 레벨 높지 않음
[주의] 이 함수는 복호화시 key 비교 능력이 없음(즉 key가 잘못되도 오류가 안남, 대신 깨진 문장이 리턴되는 구조임)
[주의] 즉, 오류없이 복호화된 결과가 리턴되었다고 해서 그것이 원문이라는 보장은 없음. 따라서 원문 확인은 별도로 해야 함.
[주의] key는 앞에 8byte까지만 같은면 같은 키로 인식하므로 8자 이내로 사용할 것.

[주의] JAVA jce는 provider에 따라 결과물이 달라질 수 있으므로 같은 JVM instance 내에서만 사용할 것.
[주의] 특히 sun provider 와 entrust provider는 서로 호환 안되므로 사용에 조심할 것.(jdk/jre/lib/security/java.security 확인 요망)

Parameters:
text - 암호화할 대상 문자열
key - 암호키(8자 이내의 일반 문장,ASCII 코드,해독시 필요하므로 유출되지 않게 잘 관리할 것)
Returns:
String 암호화된 문장
Throws:
java.lang.Exception
Since:
2010.02.03 LEE IL YONG

decodeByDES

public static java.lang.String decodeByDES(java.lang.String text,
                                           java.lang.String key)
                                    throws java.lang.Exception
DES 방식의 복호화(디코딩) 함수 - 암호화 레벨 높지 않음
[주의] 이 함수는 key 비교 능력이 없음(즉 key가 잘못되도 오류가 안남, 대신 깨진 문장이 리턴되는 구조임)
[주의] 즉, 오류없이 결과가 리턴되었다고 해서 그것이 원문이라는 보장은 없음. 따라서 원문 확인은 별도로 해야 함.
[주의] key는 앞에 8byte까지만 같은면 같은 키로 인식하므로 8자 이내로 사용할 것.

[주의] JAVA jce는 provider에 따라 결과물이 달라질 수 있으므로 같은 JVM instance 내에서만 사용할 것.
[주의] 특히 sun provider 와 entrust provider는 서로 호환 안되므로 사용에 조심할 것.(jdk/jre/lib/security/java.security 확인 요망)

Parameters:
text - DES 방식의 암호화된 문장
key - 암호키(일반 문자열,암호화할 때 사용한 키)
Returns:
String 해독된 문장(평문)
Throws:
java.lang.Exception
Since:
2010.02.03 LEE IL YONG

encodeByAES128

public static java.lang.String encodeByAES128(java.lang.String text,
                                              java.lang.String key)
                                       throws java.lang.Exception
AES 방식의 128 bit 암호화(인코딩) 함수 - 암호화 레벨 높음(아직까진 약점이 노출되지 않아 안전하다고 할 수 있음)
[주의] 이 함수는 key가 잘못되거나 본문에 이상이 있으면 오류를 던짐.
[주의] key는 앞에 16byte까지만 같은면 같은 키로 인식하므로 16자(ASCII) 이내로 사용할 것.

[주의] JAVA jce는 provider에 따라 결과물이 달라질 수 있으므로 같은 JVM instance 내에서만 사용할 것.
[주의] 특히 sun provider 와 entrust provider는 서로 호환 안되므로 사용에 조심할 것.(jdk/jre/lib/security/java.security 확인 요망)

Parameters:
text - 암호화할 대상 문자열
key - 암호키(16자 이내의 일반 문장,ASCII 코드,해독시 필요하므로 유출되지 않게 잘 관리할 것)
Returns:
String 암호화된 문장
Throws:
java.lang.Exception
Since:
2010.02.03 LEE IL YONG

decodeByAES128

public static java.lang.String decodeByAES128(java.lang.String text,
                                              java.lang.String key)
                                       throws java.lang.Exception
AES 방식의 128 bit 복호화(디코딩) 함수 - 암호화 레벨 높음(아직까진 약점이 노출되지 않아 안전하다고 할 수 있음)
[주의] 이 함수는 key가 잘못되거나 본문에 이상이 있으면 오류를 던짐.
[주의] key는 앞에 16byte까지만 같은면 같은 키로 인식하므로 16자 이내로 사용할 것.

[주의] JAVA jce는 provider에 따라 결과물이 달라질 수 있으므로 같은 JVM instance 내에서만 사용할 것.
[주의] 특히 sun provider 와 entrust provider는 서로 호환 안되므로 사용에 조심할 것.(jdk/jre/lib/security/java.security 확인 요망)

Parameters:
text - AES 방식의 암호화된 문장
key - 암호키(일반 문자열,암호화할 때 사용한 키)
Returns:
String 해독된 문장(평문)
Throws:
java.lang.Exception
Since:
2010.02.03 LEE IL YONG

encodeByAES256

public static java.lang.String encodeByAES256(java.lang.String text,
                                              java.lang.String key)
                                       throws java.lang.Exception
AES 방식의 256 bit 암호화(인코딩) 함수 - 암호화 레벨 높음(아직까진 약점이 노출되지 않아 안전하다고 할 수 있음)

[참고] 256 bit AES 암호화를 사용하려면 unlimited jurisdiction policy files을 SUN에서 다운로드(https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/ViewProductDetail-Start?ProductRef=7503-jce-1.4.2-oth-JPR@CDS-CDS_Developer)받아
j2sdk1.4.2홈/jre/lib/security 디렉토리에 local_policy.jar와 US_export_policy.jar 파일을 먼저 패치해야 사용할 수 있음.

[주의] 이 함수는 key가 잘못되거나 본문에 이상이 있으면 오류를 던짐.
[주의] key는 앞에 32byte까지만 같은면 같은 키로 인식하므로 32자(ASCII) 이내로 사용할 것.

[주의] JAVA jce는 provider에 따라 결과물이 달라질 수 있으므로 같은 JVM instance 내에서만 사용할 것.
[주의] 특히 sun provider 와 entrust provider는 서로 호환 안되므로 사용에 조심할 것.(jdk/jre/lib/security/java.security 확인 요망)

Parameters:
text - 암호화할 대상 문자열
key - 암호키(32자 이내의 일반 문장,ASCII 코드,해독시 필요하므로 유출되지 않게 잘 관리할 것)
Returns:
String 암호화된 문장
Throws:
java.lang.Exception
Since:
2010.02.03 LEE IL YONG

decodeByAES256

public static java.lang.String decodeByAES256(java.lang.String text,
                                              java.lang.String key)
                                       throws java.lang.Exception
AES 방식의 256 bit 복호화(디코딩) 함수 - 암호화 레벨 높음(아직까진 약점이 노출되지 않아 안전하다고 할 수 있음)

[참고] 256 bit AES 암호화를 사용하려면 unlimited jurisdiction policy files을 SUN에서 다운로드(https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/ViewProductDetail-Start?ProductRef=7503-jce-1.4.2-oth-JPR@CDS-CDS_Developer)받아
j2sdk1.4.2홈/jre/lib/security 디렉토리에 local_policy.jar와 US_export_policy.jar 파일을 먼저 패치해야 사용할 수 있음.

[주의] 이 함수는 key가 잘못되거나 본문에 이상이 있으면 오류를 던짐.
[주의] key는 앞에 32byte까지만 같은면 같은 키로 인식하므로 32자 이내로 사용할 것.

[주의] JAVA jce는 provider에 따라 결과물이 달라질 수 있으므로 같은 JVM instance 내에서만 사용할 것.
[주의] 특히 sun provider 와 entrust provider는 서로 호환 안되므로 사용에 조심할 것.(jdk/jre/lib/security/java.security 확인 요망)

Parameters:
text - AES 방식의 암호화된 문장
key - 암호키(일반 문자열,암호화할 때 사용한 키)
Returns:
String 해독된 문장(평문)
Throws:
java.lang.Exception
Since:
2010.02.03 LEE IL YONG

generateAES128Key

public static byte[] generateAES128Key()
                                throws java.lang.Exception
DES 방식의 암호화, key 생성 함수
[주의] key는 앞에 16byte까지만 같은면 같은 키로 인식하므로 16자(ASCII) 이내로 사용할 것.

Parameters:
String - 암호화 키
Returns:
byte[] 키 중 앞 16byte
Throws:
java.lang.Exception
Since:
2010.02.03 LEE IL YONG

generateAES256Key

public static byte[] generateAES256Key()
                                throws java.lang.Exception
DES 방식의 암호화, key 생성 함수
[주의] key는 앞에 32byte까지만 같은면 같은 키로 인식하므로 32자(ASCII) 이내로 사용할 것.

Parameters:
String - 암호화 키
Returns:
byte[] 키 중 앞 32byte
Throws:
java.lang.Exception
Since:
2010.02.03 LEE IL YONG

initSunJCEProvider

public static void initSunJCEProvider()
                               throws java.lang.Exception
서로 다른 provider로 인해 알고리즘이 충돌하지 않도록 SUN JCE Provider로 통일시키는 함수
jdk\jre\lib\security\java.security 파일에 아래와 같이 선언한 것과 같음.
security.provider.1=com.sun.crypto.provider.SunJCE

SUN JCE Provider는 jdk/jre/lib/ext/sunjce_provider.jar에 있으므로 참조가 안될 시 클래스패스에 별도로 추가할 것.

Throws:
java.lang.Exception
Since:
2010.02.11 LEE IL YONG

getJCELibPath

public static java.lang.String getJCELibPath()
                                      throws java.lang.Exception
jce.jar 경로 알아오는 함수(jce.jar 버전에 따라 인코딩이 다를 수 있으므로 확인 후 사용할 것)
같은 jce.jar라고 해서 서로 다른 jce provider를 사용할 수 있으므로 사용에 주의할 것
같은 JVM instance 내에선 같은 값을 반환하므로 서로 호환성이 보장된다고 할 수 있음.

Returns:
String jce.jar 경로
Throws:
java.lang.Exception
Since:
2010.02.03 LEE IL YONG

getClassLoadPath

public static java.lang.String getClassLoadPath(java.lang.Class targetClass)
                                         throws java.lang.Exception
해당 class가 로드된 경로(일반적으로 jar파일 위치) 알아오는 함수

Parameters:
Class - 위치를 알아낼 클래스의 원형(ex - javax.crypto.Cipher.class)
Returns:
String class 로드 위치(일반적으로 jar파일 위치)
Throws:
java.lang.Exception
Since:
2010.02.03 LEE IL YONG

compressString

public static byte[] compressString(java.lang.String text)
                             throws java.lang.Exception
문자열을 압축하는 함수

Parameters:
text - 압축할 문자열
Returns:
byte[] 압축된 byte 배열
Throws:
java.lang.Exception
Since:
2010.02.03 LEE IL YONG

compressString

public static byte[] compressString(byte[] arrByte)
                             throws java.lang.Exception
문자열을 압축하는 함수

Parameters:
arrByte - 압축할 문자열의 byte 배열
Returns:
byte[] 압축된 byte 배열
Throws:
java.lang.Exception
Since:
2010.02.03 LEE IL YONG

deCompressString

public static byte[] deCompressString(byte[] compressedMyByte)
                               throws java.lang.Exception
문자열을 압축 푸는 함수

Parameters:
compressedMyByte - 압축된 문자열의 byte 배열
Returns:
byte[] 압축 풀어진 byte 배열
Throws:
java.lang.Exception
Since:
2010.02.03 LEE IL YONG

base64Encode

public static java.lang.String base64Encode(java.lang.String text)
                                     throws java.lang.Exception
Base64 인코딩 함수

Parameters:
text - 인코딩할 대상 문자열
Returns:
String Base64로 인코딩된 문자열
Throws:
java.lang.Exception
Since:
2010.02.03 LEE IL YONG

base64Encode

public static java.lang.String base64Encode(byte[] arrText)
                                     throws java.lang.Exception
Base64 인코딩 함수

Parameters:
arrText - 인코딩할 대상 문자열의 byte 배열
Returns:
String Base64로 인코딩된 문자열
Throws:
java.lang.Exception
Since:
2010.02.03 LEE IL YONG

base64EncodeToCharArray

public static char[] base64EncodeToCharArray(byte[] arrText)
                                      throws java.lang.Exception
Base64 인코딩 함수

Parameters:
arrText - 인코딩할 대상 문자열의 byte 배열
Returns:
char[] Base64로 인코딩된 문자열의 char 배열
Throws:
java.lang.Exception
Since:
2010.02.03 LEE IL YONG

base64Decode

public static java.lang.String base64Decode(java.lang.String text)
                                     throws java.lang.Exception
Base64 디코딩 함수

Parameters:
String - Base64로 인코딩된 문자열
Returns:
String 디코딩된 문자열(평문)
Throws:
java.lang.Exception
Since:
2010.02.03 LEE IL YONG

base64Decode

public static java.lang.String base64Decode(byte[] arrText)
                                     throws java.lang.Exception
Base64 디코딩 함수

Parameters:
arrText - Base64로 인코딩된 문자열의 byte 배열
Returns:
String 디코딩된 문자열(평문)
Throws:
java.lang.Exception
Since:
2010.02.03 LEE IL YONG

base64DecodeToByteArray

public static byte[] base64DecodeToByteArray(java.lang.String text)
                                      throws java.lang.Exception
Base64 디코딩 함수

Parameters:
text - Base64로 인코딩된 문자열
Returns:
byte[] 디코딩된 문자열의 byte 배열
Throws:
java.lang.Exception
Since:
2010.02.03 LEE IL YONG

base64DecodeToByteArray

public static byte[] base64DecodeToByteArray(byte[] arrText)
                                      throws java.lang.Exception
Base64 디코딩 함수

Parameters:
arrText - Base64로 인코딩된 문자열의 byte 배열
Returns:
byte[] 디코딩된 문자열의 byte 배열
Throws:
java.lang.Exception
Since:
2010.02.03 LEE IL YONG

main

public static void main(java.lang.String[] args)
Parameters:
args -