標籤:pos cep input support user create 密碼編譯演算法 use length
今天拿到了一個棘手的工作,向三方提供資料密文,操作需要在oracle中操作,以下簡要介紹在oracle中如何使用java編寫的函數。
- 編譯java代碼,由於業務方指定了java的密碼編譯演算法,所以只有編譯規定的編碼,這裡特彆強調一下,oracle的版本內建的java的版本號碼一般較低,我的是1.6的java版本,所以我必須編譯成為為1.6的編碼:
vim SHA256.JAVApublic class SHA256{ public static String getSHA256( String input) throws NoSuchAlgorithmException,UnsupportedEncodingException { MessageDigest md = MessageDigest.getInstance("SHA-256"); md.update(input.getBytes(Charset.forName("UTF-8"))); byte byteData[] = md.digest(); StringBuffer sb = new StringBuffer(); for (int i = 0; i < byteData.length; i++) { sb.append(Integer.toString((byteData[i] & 0xff) + 0x100, 16).substring(1)); } return sb.toString(); }}編譯代碼
javac -source 1.6 -target 1.6 SHA256.java -encoding utf-8
載入java的執行條件(oracle)
su - oracle find -name ‘initjvm.sql‘sqlplus / as sysdbaSQL>@./oracle/product/11.2.0/javavm/install/initjvm.sql;
載入.class檔案
loadjava -r -f -o -user user/[email protected] ~/java/SHA256.class
oracle建立函數
CREATE OR REPLACE FUNCTION gnuhash_sha256 (string IN VARCHAR2) RETURN VARCHAR2 AS LANGUAGE JAVA NAME ‘SHA256.getSHA256(java.lang.String) return java.lang.String‘;
驗證結果
SEKECT gnuhash_sha256("12344556677778880099000djdlsl");
- 參考文檔:http://jakub.wartak.pl/blog/?p=124
Oracle使用java函數