天天看點

Oracle aes128和aes256加解密

–aes128加密

DECLARE
  l_src_data VARCHAR2(20) := 'Source Data';
  l_type pls_integer      := dbms_crypto.encrypt_aes128 + dbms_crypto.pad_pkcs5 + dbms_crypto.chain_cbc;
  l_key VARCHAR2(16)      := '0123456789123456';
  l_encval raw(2000);
BEGIN
  l_encval := dbms_crypto.encrypt( src=>utl_i18n.string_to_raw(l_src_data,'AL32UTF8'), typ=>l_type, KEY=>utl_i18n.string_to_raw(l_key,'AL32UTF8'));
  dbms_output.put_line(l_encval);
END;
/

SELECT RAWTOHEX(DBMS_CRYPTO.ENCRYPT(UTL_I18N.STRING_TO_RAW('Source Data','AL32UTF8'), 4358, UTL_I18N.STRING_TO_RAW('0123456789123456','AL32UTF8')))
FROM dual;

           

–aes256加密

DECLARE
  l_src_data VARCHAR2(20) := 'Source Data';
  l_type pls_integer      := dbms_crypto.encrypt_aes256 + dbms_crypto.pad_pkcs5 + dbms_crypto.chain_cbc;
  l_key VARCHAR2(32)      := '01234567891234560123456789123456';
  l_encval raw(2000);
BEGIN
  l_encval := dbms_crypto.encrypt( src=>utl_i18n.string_to_raw(l_src_data,'AL32UTF8'), typ=>l_type, KEY=>utl_i18n.string_to_raw(l_key,'AL32UTF8'));
  dbms_output.put_line(l_encval);
END;
/

SELECT RAWTOHEX(DBMS_CRYPTO.ENCRYPT(UTL_I18N.STRING_TO_RAW('Source Data','AL32UTF8'), 4360, UTL_I18N.STRING_TO_RAW('01234567891234560123456789123456','AL32UTF8')))
FROM dual;
           

–解密128

DECLARE
  l_src_data raw(100) := hextoraw('2644B3DAB5C617B67423F6CB7F3B91B0');
  l_type pls_integer  := dbms_crypto.encrypt_aes128 + dbms_crypto.pad_pkcs5 + dbms_crypto.chain_cbc;
  l_key VARCHAR2(16)  := '0123456789123456';
  l_decval raw(200);
BEGIN
  l_decval := dbms_crypto.decrypt(src => l_src_data, typ => l_type, KEY => utl_i18n.string_to_raw(l_key, 'AL32UTF8'));
  dbms_output.put_line(utl_i18n.raw_to_char(l_decval));
END;
/

SELECT utl_i18n.raw_to_char(DBMS_CRYPTO.decrypt(hextoraw('2644B3DAB5C617B67423F6CB7F3B91B0'), 4358, UTL_I18N.STRING_TO_RAW('0123456789123456','AL32UTF8')))
FROM dual;
           

–解密256

DECLARE
  l_src_data raw(100) := hextoraw('585388D3D97972B7356EAA57BE39018E');
  l_type pls_integer  := dbms_crypto.encrypt_aes256 + dbms_crypto.pad_pkcs5 + dbms_crypto.chain_cbc;
  l_key VARCHAR2(32)  := '01234567891234560123456789123456';
  l_decval raw(200);
BEGIN
  l_decval := dbms_crypto.decrypt(src => l_src_data, typ => l_type, KEY => utl_i18n.string_to_raw(l_key, 'AL32UTF8'));
  dbms_output.put_line(utl_i18n.raw_to_char(l_decval));
END;
/

SELECT utl_i18n.raw_to_char(DBMS_CRYPTO.decrypt(hextoraw('585388D3D97972B7356EAA57BE39018E'), 4360, UTL_I18N.STRING_TO_RAW('01234567891234560123456789123456','AL32UTF8')))
FROM dual;