在oracle plsql中使用加密/解密
create or replace PACKAGE BODY "PKG_LOGI_PWD_REG" as FUNCTION decrypt_val( p_val IN RAW ) RETURN VARCHAR2 IS l_decrypted RAW(32); l_decrypted_string VARCHAR2(32); L_USER varchar2(32); L_CHARACTER_SET varchar2(10); L_STRING varchar2(32); L_KEY raw(250); L_ENCRYPTION_TYPE PLS_INTEGER; BEGIN L_KEY := UTL_I18N.STRING_TO_RAW ( data => '98345678901234567890123456789012', DST_CHARSET => 'AL32UTF8' ); L_ENCRYPTION_TYPE := dbms_crypto.encrypt_aes256 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5; l_decrypted := dbms_crypto.decrypt ( SRC => P_VAL, TYP => L_ENCRYPTION_TYPE, key => L_KEY ); l_decrypted_string := utl_i18n.raw_to_char ( data => l_decrypted , src_charset => 'AL32UTF8' ); RETURN l_decrypted_string; end DECRYPT_VAL; FUNCTION encrypt_val( p_val IN VARCHAR2 ) RETURN VARCHAR2 is L_VAL RAW(32); L_ENCRYPTED raw(32); L_CHARACTER_SET varchar2(10); L_STRING varchar2(32); L_KEY RAW(250); L_ENCRYPTION_TYPE PLS_INTEGER; begin L_KEY := UTL_I18N.STRING_TO_RAW ( data => '98345678901234567890123456789012', DST_CHARSET => 'AL32UTF8' ); L_ENCRYPTION_TYPE := dbms_crypto.encrypt_aes256 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5; L_VAL := utl_i18n.string_to_raw ( data => p_val, dst_charset => 'AL32UTF8' ); L_ENCRYPTED := dbms_crypto.encrypt ( SRC => L_VAL, TYP => L_ENCRYPTION_TYPE, key => L_KEY ); return L_ENCRYPTED; EXCEPTION when OTHERS then RETURN SQLCODE||'-'||SQLERRM; end ENCRYPT_VAL; end PKG_LOGI_PWD_REG;
该 +pvG30k4/KFkeim47tslFQ== 是在Base64表示,而在 FA9BC6DF4938FCA1647A29B8EEDB2515 在HEX表示中,但两个字符串表示相同的值。
+pvG30k4/KFkeim47tslFQ==
FA9BC6DF4938FCA1647A29B8EEDB2515
确定您将使用的单个表示,并将其中一个输出转换为它。