У меня досадная проблема, по которой у меня нет идей. При использовании функции DBMS_CRYPTO.ENCRYPT пакета oracle dbms_crypto я получаю другой результат в oracle 11 C и oracle 19. Впервые я заметил эту проблему при переносе базы данных с 11 c на 19 *. 1020 * и возникает проблема при расшифровке сохраненных значений.
Следующий запрос sql иллюстрирует эту проблему:
select rawtohex(DBMS_CRYPTO.ENCRYPT(src => UTL_I18N.STRING_TO_RAW ('TOENCRYPT', 'AL32UTF8'),typ => 5128 ,key => UTL_I18N.STRING_TO_RAW ('e24WwDYbk25wqe5pevJ3g3VJgyjXr6HX', 'AL32UTF8'))) from dual;
В oracle 11 c этот запрос возвращает 9A18D619A269A5AF9716F2869A8A4F5F
, а в oracle 19 c он возвращает 049AFACC8EC7AE239EC496E5B4534048
.
Я пытался выяснить, что могло вызвать эту разницу. Я проверил части запроса и выделил первое отличие от вывода функции шифрования.
Я также проверил с разными базами данных 11g, и запрос всегда давал один и тот же результат.
Кто-нибудь еще сталкивался с этой проблемой раньше и знает, как ее решить? Или кто-нибудь может дать мне несколько указателей относительно того, что повлияет на функции запроса?