Создание sha1-хеша строки в Oracle

Во-первых, это было бы более просто, если бы onclick обработчик был установлен этот путь:

Select

Тогда itemid и itemname нужно оставить для JavaScript (то есть, " становится \", и т.д.).

при использовании Java на стороне сервера Вы могли бы смотреть на класс StringEscapeUtils от общего Ленга Джакарты. Иначе не должно занимать слишком много времени писать Ваш собственный 'escapeJavascript' метод.

15
задан PrometheusDrake 17 November 2009 в 15:43
поделиться

1 ответ

Пакет DBMS_CRYPTO - это правильный пакет для генерации хэшей. Он не предоставляется PUBLIC по умолчанию, вам придется предоставить его специально ( GRANT EXECUTE ON SYS.DBMS_CRYPTO TO user1 ).

Результатом этой функции является тип данных RAW . Вы можете сохранить его в столбце RAW или преобразовать в VARCHAR2 , используя функции RAWTOHEX или UTL_ENCODE.BASE64_ENCODE .

Функция HASH перегружена, чтобы принимать в качестве входных данных три типа данных: RAW , CLOB и BLOB . Согласно правилам неявного преобразования , если вы используете VARCHAR2 в качестве входных данных, Oracle попытается преобразовать его в RAW и, скорее всего, потерпит неудачу, поскольку это преобразование работает только с шестнадцатеричными строками.

Если вы используете VARCHAR2 , вам необходимо преобразовать входные данные в двоичный тип данных или CLOB , например:

DECLARE
   x RAW(20);
BEGIN
   SELECT sys.dbms_crypto.hash(utl_raw.cast_to_raw(col1||col2||to_char(col3)), 
                               sys.dbms_crypto.hash_sh1) 
     INTO x 
     FROM t;
END;

дополнительную информацию вы найдете в документации DBMS_CRYPTO.hash

24
ответ дан 1 December 2019 в 01:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: