我有一个烦人的问题,我没有想法。当使用 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 的不同数据库,查询总是给出相同的结果。
其他人之前是否遇到过这个问题并且知道如何解决这个问题?或者有人可以给我一些关于什么会影响查询功能的指示吗?