在我的用户表中,用户名列是通过PBEWithMD5AndDES算法编码的。现在我想要这样的东西:
WITH TEMP
AS (SELECT E.UAC_USER_ID AS ID,
E.UAC_USER_USERNAME AS USERNAME,
E.UAC_USER_FIRSTNAME || ' ' || E.UAC_USER_LASTNAME AS NAME,
E.UAC_USER_PERSONELCODE AS PERSONELCODE
FROM UAC_USERS E
WHERE E.UAC_USER_ISENABLED = 1)
SELECT *
FROM TEMP
WHERE 1 = 1 AND DECODE (USERNAME) = 'admin'
oracle中是否有可以解码所选字段的嵌入式函数?
答案 0 :(得分:1)
我只能给你解决问题的方向,而不是回答。
Oracle有一个dbms_crypto包,可能可以帮助你。
参见示例https://docs.oracle.com/database/121/ARPLS/d_crypto.htm#ARPLS65690 你可以找到encryption_type
encryption_type PLS_INTEGER := -- total encryption type
DBMS_CRYPTO.ENCRYPT_AES256
+ DBMS_CRYPTO.CHAIN_CBC -- description in doc
+ DBMS_CRYPTO.PAD_PKCS5; -- description in doc
在DBMS_CRYPTO中,还有另一个常量DBMS_CRYPTO.ENCRYPT_PBE_MD5DES。 从理论上讲,这可能会有所帮助:
encryption_type PLS_INTEGER := -- total encryption type
DBMS_CRYPTO.ENCRYPT_PBE_MD5DES
+ DBMS_CRYPTO.CHAIN_CBC -- description in doc
+ DBMS_CRYPTO.PAD_PKCS5; -- description in doc
但是在代码中使用此encryption_type会出错。我也尝试了几种组合并改变代码,但最后我放弃了。可能是其中一个原因是DBMS_CRYPTO.ENCRYPT_PBE_MD5DES不在doc中描述,或者我应该在示例中更改smt else。