PaaS/Data

(Oralce DB) SHA512 암호화 프로시저 만들기

armyost 2021. 7. 26. 06:01
728x90


1) PLSQL 로 SHA512 JAVA class 생성 

 

CREATE_COMPILE_JAVA_SOURCE_SHA512.sql


create or replace and compile java source named SHA512 as


import java.security.MessageDigest;

public class SHA512 {
	public static String encrypt(String tmpStr) throws Exception{
	//SHA-512 적용
	MessageDigest md = MessageDigest.getInstance("SHA-512");
   	 	md.update(tmpStr.getBytes());
   	 	byte[] msgb = md.digest();
    	StringBuffer sb = new StringBuffer();
    	for(int i = 0; i < msgb.length; i++){
			byte temp = msgb[i];
			String str = Integer.toHexString(temp & 0xFF);
			while(str.length() < 2){
				str = "0" + str;
			}

			str = str.substring(str.length() - 2); 
      		sb.append(str);
		}
		return sb.toString();
	}
}


※  SQL 클라이언트 상에서 자바클래스를 입력하고 실행하면 빌드가 됩니다.





2) 위에서 생성한 class 를 이용할수 있도록 function  생성

 

CREATE_FUNCTION_F_ENC_SHA512.sql


create or replace FUNCTION F_ENC_SHA512
(
	P_STRING IN VARCHAR2 
) RETURN VARCHAR2 as language java name 'SHA512.encrypt(java.lang.String) return String';


※ java 를 바로 sql 문에 사용할수 없기 때문에. function 안에다가 java 문을 사용하여 function 실행하여 java 를 사용한다.




3) 테스트

 

SQL 클라이언트에서 아래 쿼리를 수행하여 테스트 해봅니다.
select F_ENC_SHA512('123')  from dual ;



참고: https://dowhiletrue.tistory.com/entry/ORACLE-JAVA-오라클-JAVA-함수처럼-사용 [누리누리한세상]