ITPub博客

首页 > 数据库 > 国内数据库 > 字段加密解密

字段加密解密

原创 国内数据库 作者:yanhengdoudou 时间:2020-03-16 16:10:10 0 删除 编辑

1 数字字母加密

1.1 创建加密函数

create or replace

        function ENCRYPT_DES

                (

                        p_text varchar2 ,

                        p_key  varchar2 )

                return varchar2

        is

                v_text varchar2 ( 8000 );

                v_enc  varchar2 ( 8000 );

                raw_input RAW ( 128 ) ;

                key_input RAW ( 128 ) ;

                decrypted_raw RAW ( 2048 );

        begin

                v_text    := rpad ( p_text , ( trunc ( length ( p_text ) /8 ) +1 ) *8 , chr ( 0 ));

                raw_input := UTL_RAW . CAST_TO_RAW ( v_text );

                key_input := UTL_RAW . CAST_TO_RAW ( p_key );

                dbms_obfuscation_toolkit . DESEncrypt ( input =>   raw_input , key => key_input , encrypted_data   =>decrypted_raw );

                v_enc := rawtohex ( decrypted_raw );

                dbms_output . put_line ( v_enc );

                return v_enc ;

          end ;

 

1.2 创建解密函数

create or replace

        function DECRYPT_DES

                (

                        p_text varchar2 ,

                        p_key  varchar2 )

                return varchar2

        is

                v_text varchar2 ( 8000 );

        begin

                dbms_obfuscation_toolkit . DESDECRYPT ( input_string   => UTL_RAW . CAST_TO_varchar2 ( p_text ), key_string =>p_key , decrypted_string=> v_text );

                v_text := rtrim ( v_text , chr ( 0 ));

                dbms_output . put_line ( v_text );

                return v_text ;

          end ;

 

1.3 创建测试表

CREATE TABLE TABLE_1 ( "C1" VARCHAR2 ( 50 ));

 

 

1.4 插入数据

insert INTO "SYSDBA" . "TABLE_1" VALUES ( '1' );

insert INTO "SYSDBA" . "TABLE_1" VALUES ( 'a' );

commit ;

 

1.5 普通查看

select C1 from TABLE_1 ;

 

1.6 加密字段

update TABLE_1 set C1 = ENCRYPT_DES ( C1 , 'test#5&124*!de' ); COMMIT ;

 

1.7 解密字段并查看

select DECRYPT_DES ( C1 , 'test#5&124*!de' ) from TABLE_1 ;

 

 

 

2 汉字加密

2.1 创建测试表

CREATE TABLE TABLE_2 ( "C1" VARCHAR2 ( 50 ));

 

2.2 插入数据

insert INTO "SYSDBA" . "TABLE_2" VALUES ( ' 张三 ' );

insert INTO "SYSDBA" . "TABLE_2" VALUES ( ' 李四 ' );

commit ;

 

2.3 普通查看

select C1 from TABLE_2 ;

 

2.4 加密字段

update TABLE_2 set C1 = replace ( ASCIISTR ( C1 ), '\' , '%u' ); COMMIT ;

 

2.5 解密字段并查看

select UNISTR ( replace ( C1 , '%u' , '\' )) from TABLE_2 ;

 


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69949798/viewspace-2679245/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-09-29

  • 博文量
    70
  • 访问量
    193347