utl加密oracle,Oracle加密解密函数

一、加密函数

CREATE OR REPLACE FUNCTION DECRYPT_FUNCTION(V_STR VARCHAR2)

RETURN VARCHAR2 AS

V_KEY_RAW RAW(24);

V_STR_RAW RAW(2000);

V_RETURN_STR VARCHAR2(2000);

V_TYPE PLS_INTEGER;

V_KEY VARCHAR2(24);--字符串型密钥,长度为24字节

BEGIN

/************************************************

解密函数 FUN_DECRYPTION

入参:

V_STR 输入密文字符串,约定密文为16进制字符串

返回值:

V_RETURN_STR 返回明文字符串

异常处理:

此函数不对任何异常做捕捉处理,请相应的程序模块对异常做捕捉处理。

加密方式:

密钥位数:DES DBMS_CRYPTO.ENCRYPT_DES

连接方式:ECB DBMS_CRYPTO.CHAIN_ECB

填充方式:PKCS5 DBMS_CRYPTO.PAD_PKCS5

***************************************************/

--配置表查询秘钥

--select PARA_VALUE into V_KEY from parameter_config where PARA_NAME = 's_key';

V_KEY_RAW := UTL_I18N.STRING_TO_RAW('SCSIS@2015', 'UTF8');

V_STR_RAW := HEXTORAW(V_STR);

-- 指定‘密钥算法’、‘工作模式’、‘填充方式’

V_TYPE := DBMS_CRYPTO.ENCRYPT_DES + DBMS_CRYPTO.CHAIN_ECB +

DBMS_CRYPTO.PAD_PKCS5;

V_STR_RAW := DBMS_CRYPTO.DECRYPT(SRC => V_STR_RAW,

TYP => V_TYPE,

KEY => V_KEY_RAW);

V_RETURN_STR := UTL_I18N.RAW_TO_CHAR(V_STR_RAW, 'UTF8');

RETURN V_RETURN_STR;

/* EXCEPTION

WHEN OTHERS THEN

RETURN SQLERRM||SQLCODE ; */

END;二、解密函数

CREATE OR REPLACE FUNCTION ENCRYPT_FUNCTION(V_STR VARCHAR2)

RETURN VARCHAR2 AS

V_KEY_RAW RAW(24);

V_STR_RAW RAW(2000);

V_RETURN_STR VARCHAR2(2000);

V_TYPE PLS_INTEGER;

V_KEY VARCHAR2(24);--字符串型密钥,长度为24字节

BEGIN

/*************************************************

加密函数 FUN_ENCRYPTION

入参:

V_STR 输入明文字符串

返回值:

V_RETURN_STR 返回密文字符串,约定返回为 16进制密文字符串

异常处理:

此函数不对任何异常做捕捉处理,请相应的程序模块对异常做捕捉处理。

加密方式:

密钥位数:DES DBMS_CRYPTO.ENCRYPT_DES

连接方式:ECB DBMS_CRYPTO.CHAIN_ECB

填充方式:PKCS5 DBMS_CRYPTO.PAD_PKCS5

**************************************************/

--配置表查询秘钥

select PARA_VALUE into V_KEY from parameter_config where PARA_NAME = 's_key';

V_KEY_RAW := UTL_I18N.STRING_TO_RAW(V_KEY, 'UTF8');

V_STR_RAW := UTL_I18N.STRING_TO_RAW(V_STR, 'UTF8');

-- 指定‘密钥算法’、‘工作模式’、‘填充方式’

V_TYPE := DBMS_CRYPTO.ENCRYPT_DES + DBMS_CRYPTO.CHAIN_ECB +

DBMS_CRYPTO.PAD_PKCS5;

V_STR_RAW := DBMS_CRYPTO.ENCRYPT(SRC => V_STR_RAW,

TYP => V_TYPE,

KEY => V_KEY_RAW);

V_RETURN_STR := RAWTOHEX(V_STR_RAW);

RETURN V_RETURN_STR;

/* EXCEPTION

WHEN OTHERS THEN

RETURN SQLERRM||SQLCODE ; */

END;三、秘钥配置表

-- Create table

create table PARAMETER_CONFIG

(

id NUMBER(10) not null,

para_name VARCHAR2(20) not null,

para_value VARCHAR2(50) not null,

is_valid VARCHAR2(1) not null,

para_desc VARCHAR2(100),

memo VARCHAR2(100)

);

-- Add comments to the table

comment on table PARAMETER_CONFIG

is '参数配置表';

-- Add comments to the columns

comment on column PARAMETER_CONFIG.id

is '序列号';

comment on column PARAMETER_CONFIG.para_name

is '参数名称';

comment on column PARAMETER_CONFIG.para_value

is '参数值';

comment on column PARAMETER_CONFIG.is_valid

is '是否有效(Y/N)';

comment on column PARAMETER_CONFIG.para_desc

is '参数描述';

comment on column PARAMETER_CONFIG.memo

is '备注';

-- Create/Recreate indexes

create index PARAMETER_CONFIG_INDEX1 on PARAMETER_CONFIG (PARA_NAME);

-- Create/Recreate primary, unique and foreign key constraints

alter table PARAMETER_CONFIG

add constraint PARAMETER_CONFIG_PK primary key (ID)

using index;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值