如何正确拨打电话DBMS_OBFUSCATION_TOOLKIT.DESEncrypt?(如果可能,不使用PL / SQL)
DBMS_OBFUSCATION_TOOLKIT.DESEncrypt
select DBMS_OBFUSCATION_TOOLKIT.DESEncrypt('x','y') from dual;
不起作用,因为DESEncrypt已过载:
ORA-06553: PLS-307: Too many declarations of "DESENCRYPT" match this call 06553. 00000 - "PLS-%s: %s" *Cause: *Action:
有没有一种方法可以选择DESENCRYPT的一种实现(可能是VARCHAR2变体)来避免此错误?
在这里,只需提供参数名称就可以让它知道要使用哪个重载!
select DBMS_OBFUSCATION_TOOLKIT.DesEncrypt(INPUT_STRING=>'11112abc',KEY_STRING=>'4578ccde') from dual ;
退货
M5锟w5Z
请注意,您的密钥必须至少为8个字节:
ORA-28234:密钥长度太短ORA-06512:在“ SYS.DBMS_OBFUSCATION_TOOLKIT_FFI”,行21 ORA-06512:在“ SYS.DBMS_OBFUSCATION_TOOLKIT”,行12628234。00000-“密钥长度太短” 原因:指定的密钥对于算法而言太短了。DES需要至少8个字节的密钥。三键DES在两键模式下至少需要16个字节的密钥,而在三键模式下需要至少24个字节的密钥。操作:指定更长的密钥。
您可以随时使用包装函数来尝试(如Tony建议的那样)
create or replace function DesEncrypt(pinputString IN VARCHAR2 , pKeyString in VARCHAR2) RETURN varchar2 IS BEGIN return DBMS_OBFUSCATION_TOOLKIT.DesEncrypt(INPUT_STRING=>INPUTSTRING,KEY_STRING=>KEYSTRING); END DesEncrypt; / select DesEncrypt('11112abc' , '4578ccde') from dual ;
由于您的体重是10克,因此您可能需要使用DBMS_CRYPTO软件包 http://www.stanford.edu/dept/itss/docs/oracle/10g/network.101/b10773/apdvncrp.htm