我想加密数据库中的密码列,我正在尝试使用DBMS_CRYPTO包中的加密函数(已经从sys帐户给当前用户执行访问权限),但是我收到以下错误.
请给我一些如何使用此功能的示例:
select DBMS_CRYPTO.encrypt('12345',dbms_crypto.DES_CBC_PKCS5,'A1') from dual;
错误:
ORA-06553: PLS-221: ‘DES_CBC_PKCS5’ is not a procedure or is undefined
06553. 00000 – “PLS-%s: %s”
解决方法
常量dbms_crypto.DES_CBC_PKCS5仅可在PL / SQL上引用 – 而不是来自SQL.
您必须在SELECT语句中将其替换为文字值.
要获取值,请使用PL / SQL块
begin dbms_output.put_line(dbms_crypto.DES_CBC_PKCS5); end; /
.
4353
您还必须使用更长的密钥
select DBMS_CRYPTO.encrypt(UTL_RAW.CAST_TO_RAW ('ABCDEFGH12345'),4353 /* = dbms_crypto.DES_CBC_PKCS5 */,'A1A2A3A4A5A6CAFE') from dual; 9320CBCBD25E8721BD04990A0EAEAF00