1

私はアイデアが不足している厄介な問題を抱えています。Oracle dbms_crypto パッケージの DBMS_CRYPTO.ENCRYPT 関数を使用すると、Oracle 11C と Oracle 19 で異なる結果が得られます。この問題に最初に気付いたのは、データベースを 11c から 19c に移行し、保存された値の復号化の問題に遭遇したときでした。

次の 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 11c では、このクエリは を返します9A18D619A269A5AF9716F2869A8A4F5Fが、Oracle 19c では を返します049AFACC8EC7AE239EC496E5B4534048

この違いの原因は何なのかを考えてみました。クエリのサブ部分をチェックし、最初の違いを暗号化関数の出力に分離しました。

また、11g のさまざまなデータベースでチェックしたところ、クエリは常に同じ結果を返しました。

他の誰かが以前にこの問題に遭遇し、これを解決する方法を知っていますか? または、クエリの関数に何が影響するかについて、誰かが私にいくつかの指針を与えることができますか?

4

1 に答える 1