ORACLE应用经验(4)-加密程序[转载]

本文介绍了一个用于Oracle数据库的加密程序,包括数据库触发器scjmmm的创建及其工作原理,该触发器在插入或更新GHXXB表时自动调用。此外,还详细介绍了加密函数ENCRYPT的具体实现方式,该函数通过复杂的字符转换和数学运算来加密密码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ORACLE应用经验(4)-加密程序
-------------1. 加密程序数据库触发子scjmmm----------------------
REM  
GHXXB制立数据库触发子(INSERT OR UPDATE GHXXB时触发)
drop trigger scjmmm;
create or replace trigger  scjmmm 
before insert or  update of mm  On ghxxb For each Row
Begin
    :new.mm:=ENCRYPT(:new.mm,:NEW.GH,TO_CHAR(SYSDATE,'SS'));
End;
/
-------------2. 
密码的加密程序ENCRYPT----------------------
Create or Replace 
Function ENCRYPT (Inpass In Varchar2,IN_GH In Varchar2,IN_SS In Varchar2)
 Return Varchar2 Is 
  bcs   varchar2(20);
  bcs1  number;
  cs    number;
  jg    number;
  m_gh  VARCHAR2(4);
  m_mm  VARCHAR2(20);
Begin
      m_gh:=IN_GH;
      m_mm:=INPASS;
      cs:=TO_NUMBER(IN_SS);
      If cs<=1 then cs:=77 ;end if;
      bcs:=substr(to_char(ascii(substr(m_gh,1,1))),1,2);
      If bcs<'1' then bcs:='7' ;end if;
      m_gh:=substr(m_gh,2);
      Loop EXIT WHEN nvl(length(m_gh),0)=0 ;
           bcs:=bcs||substr(to_char(ascii(substr(m_gh,1,1))),-1,1);
           m_gh:=substr(m_gh,2);
      End loop;
      Loop EXIT WHEN nvl(length(m_mm),0)=0 ;
           bcs:=bcs||substr(to_char(ascii(substr(m_mm,1,1))),-1,1);
           m_mm:=substr(m_mm,2);
      End loop;   
      bcs1:=to_number(bcs);     
      jg:=cs*bcs1;
      Loop EXIT WHEN length(to_char(jg))>13;
           jg:=jg*cs ;
      End loop;
      RETURN(IN_SS||substr(to_char(jg),1,14));
End;
/
grant execute on ENCRYPT to public;
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值