Oracle имеет встроенную поддержку базы данных для SHA-512.
Если вам нужно решение для чистого SQL и ваша входная строка находится в пределах ограничения длины строки SQL (4000 символов, если вы не включили 12cрасширенная семантика varchar2) вы можете сделать это:
select standard_hash ( '230049008251111', 'SHA512')
from dual
/
Если у вас более длинные строки, Oracle предоставляет пакет DBMS_CRYPTO (не путать с устаревшей DBMS_CRYPTO_TOOLKIT).Вы можете использовать это так ...
declare
str clob;
hsh raw(64);
begin
str := '230049008251111';
hsh := dbms_crypto.hash (str, dbms_crypto.HASH_SH512);
dbms_output.put_line(hsh);
end;
/
... или что-то еще, что имеет смысл для вашего приложения.Есть три варианта dbms_crypto.hash()
, которые принимают BLOB, CLOB и RAW.Нет варианта для старого доброго varchar2.Не уверен почему. Узнайте больше .
Оба этих вызова выдают один и тот же результат (как можно было бы надеяться):
DA9AA3ACDE64DB3297FF75FDE407DAF3DB7EFF0CDF987C6C16BAF28242997046997EBF5A2F6C4F7449A4936C6518A6FD24A3C0984E9C09BF19395175F1BE2B5F
Как отмечает @WernfriedDomscheit, выполнение по DBMS_CRYPTO не предоставляется по умолчанию.Однако STANDARD_HASH()
есть.Поэтому, в зависимости от ваших требований, вам, возможно, придется обратиться к вашей команде DBA, чтобы получить необходимые привилегии.