Ввиду вопроса, решил попробовать реализовать расчет hash Sha-256 под 11й Oracle на Java.

Всё заработало.

Sha2.java

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class Sha2 {
    public static String hash256(String data) throws NoSuchAlgorithmException, UnsupportedEncodingException {
        MessageDigest md = MessageDigest.getInstance("SHA-256");
        md.update(data.getBytes("UTF-8"));
        return bytesToHex(md.digest());
    }
    public static String bytesToHex(byte[] bytes) {
        StringBuffer result = new StringBuffer();
        for (byte byt : bytes) result.append(Integer.toString((byt & 0xff) + 0x100, 16).substring(1));
        return result.toString();
    }
} 

загружаем через loadjava

создаем функцию

create or replace FUNCTION fsha256(p_in_str in VARCHAR2) RETURN VARCHAR2 AS
  LANGUAGE JAVA NAME 'Sha2.hash256(java.lang.String) return java.lang.String';

тестируем

select FSHA256('Привет мир') from dual;

итого:

830d1964dc8673182a40f9adebf598960d37fbe200405b249774ecfa5b465748

Written by 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *