`
softlife
  • 浏览: 109896 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Oracle的AES加密与解密用法

 
阅读更多
--加密字符串
create or replace function des3_enc
(
  input varchar2
)
return varchar2
is
  i_data varchar2(128);
  v_in varchar2(255);
  i_key varchar2(128);
  raw_input RAW(128) ;
  key_input RAW(128) ;
  decrypted_raw RAW(2048);
begin
  --判断是否为空
  if input is null then
      return null;
    else if input='' then
        return '';
    end if;
  end if;
  
  --key,至少要16位
  i_key:= 'abcdef0123456789';

  --要加密信息
  i_data:= input;
  v_in := rpad(i_data,(trunc(length(i_data)/8)+1)*8,chr(0));
  --字符转成RAW   
  raw_input := UTL_RAW.CAST_TO_RAW(v_in);
  key_input := UTL_RAW.CAST_TO_RAW(i_key);
  dbms_obfuscation_toolkit.DES3Encrypt(input => raw_input,key => key_input,encrypted_data => decrypted_raw);

  --加密信息转成字符
  return to_char(rawtohex(decrypted_raw));
   
end des3_enc;



--解密字符串
create or replace function des3_dec
(
  input varchar2
)
return varchar2
is
  i_data varchar2(2048);
  i_key varchar2(2048);                                      
  v_in varchar2(2048);
begin
  --判断是否为空
  if input is null then
      return null;
    else if input='' then
        return '';
    end if;
  end if; 

  --key,至少要16位
  i_key:= 'abcdef0123456789';
  
  --要解密的信息
  i_data := input;

  dbms_obfuscation_toolkit.DES3DECRYPT(input_string => UTL_RAW.CAST_TO_varchar2(i_data),key_string => i_key,decrypted_string=> v_in);
  v_in := rtrim(v_in,chr(0));

  --返回解密信息
  return v_in;
   
end des3_dec;


--触发器,用于在增加、修改时自动加密字段,查询时需要手动调用解密函数进行解密。
create or replace trigger enc_trigger
  before insert or update on scott.dept
  for each row
begin
      select des3_enc(:new.dname) into :new.dname from dual;
  end enc_trigger;



--使用示例:
insert into dept values (50,'test','test');
commit;
select des3_dec(dname) from dept where deptno=50;
分享到:
评论

相关推荐

    基于C++的AES加密和解密代码_基于C++的AES加密和解密代码._

    **AES加密算法** AES,全称为“Advanced Encryption Standard”...通过理解AES的工作原理和C++中库的使用方法,开发者可以构建高效且安全的加密系统。在实际开发过程中,务必遵循最佳实践,确保代码的健壮性和安全性。

    oracle加密解密

    在不同的 Oracle 版本中(如 Oracle 9i 和 10g),加密解密的方法存在一定的差异。 #### 二、Oracle 10g 加密解密实现 在 Oracle 10g 中,主要通过 `DBMS_CRYPTO` 包来实现数据的加密和解密操作。该包提供了多种...

    Java版AES加密算法,亲测可用

    这个案例可能涵盖了密钥生成、加密解密过程以及异常处理等方面,帮助开发者快速理解和应用AES加密算法。 总结来说,Java版的AES加密算法提供了一种安全可靠的方式来保护数据。通过合理使用和管理密钥,结合合适的...

    ORACLE数据加密解密处理的设计及实现 (1).pdf

    我们可以使用PowerBuilder数据窗口和ORACLE数据库的触发器机制来实现加密解密处理,以确保数据的安全性和性能。 知识点: 1. ORACLE数据库加密解密处理的必要性 2. ORACLE数据库加密机制 3. 透明加密、基于列的...

    Oracle定义DES加密解密及MD5加密函数示例

    DES是一种对称加密算法,它使用56位的密钥对数据进行加密和解密。在Oracle中,可以使用`DBMS_OBFUSCATION_TOOLKIT`包中的`DESEncrypt`和`DESDecrypt`过程来实现。在提供的代码示例中,`encrypt_des`函数接收两个...

    AES256加密工具类,及其所必须的jar包

    AES(Advanced Encryption Standard)是一种广泛使用的对称加密算法,提供了强大的安全性,尤其适用于大量数据的加密。AES256指的是使用256位密钥版本的AES,其加密强度非常高,被认为是商业级别的加密标准。 在这...

    jdk8解除aes加密限制.zip

    当开发者试图使用256位密钥进行AES加密时,就会遇到上述错误。 要解除这个限制,你需要做以下几步: 1. **下载不受限的JCE政策文件**:你可以从Oracle官方网站或者其他可信赖的来源下载不受限制的JCE政策文件,...

    AES加密异常处理

    AES(Advanced Encryption Standard)是一种广泛使用的块加密算法,标准中定义了128位、192位和256位三种密钥长度的版本。...同时,理解和正确使用AES加密的各种参数和模式也是保证数据安全的重要一环。

    oracle10g加密解密[归类].pdf

    1. **加密与解密方法**: Oracle 10g 提供了 `DBMS_CRYPTO` 包,它包含了用于加密和解密数据的函数。在示例中,`DECRYPT` 和 `ENCRYPT` 是自定义函数,它们分别用于解密和加密数据。`ENCRYPT` 函数使用 `UTL_I18N....

    AES加密支持使用192、256位密匙

    在Java中,如果要使用超过128位的密钥进行AES加密,需要安装Java Cryptography Extension (JCE)无限制强度Jurisdiction Policy Files,因为默认的JRE会限制使用超过128位的密钥。 首先,我们需要了解AES加密的工作...

    oracle 加密技术

    这个包提供了对数据进行加密和解密的方法,并且可以与wrap命令结合使用,来增强数据的安全性。用户还可以使用DBMSCRYPTO包,这个包提供了更为现代化的加密和解密功能,支持多种算法,如AES和DES等。 对于安全性更高...

    AES加密时抛出java.security.InvalidKeyException: Illegal key size or default parameter

    当在Java环境中使用AES加密时遇到 `java.security.InvalidKeyException: Illegal key size or default parameter` 这个异常,通常意味着密钥的长度超过了Java安全策略所允许的最大值。具体来说: - **非法密钥大小...

    Base64及多种加密解密方法_加密_解密_

    本文将深入探讨Base64编码以及几种常见的加密解密方法,并提供C#语言的源代码实现。 首先,我们来理解Base64编码。Base64是一种用于在网络上传输二进制数据的编码方式,它将任意可打印字符转换为一个可读的ASCII...

    ORACLE数据库加密程序

    Oracle数据库提供了多种加密方法,包括透明数据加密(Transparent Data Encryption, TDE)、列级加密、数据库表空间加密和应用程序透明的高级加密标准(AES)。TDE是一种自动加密数据的方法,可以在数据写入磁盘时...

    delphi xe3与java aes缺省加密模式加解密互换示例

    测试通过的delphi与java实现aes算法对文件进行加密和解密操作的代码,delphi端是delphi xe3,java端是oracle jdk 1.8版本,在win32和win64模式下编译测试均通过没有问题。 注意:这个示例只调整了128位aes stream方式...

    java AES加解密方式

    AESServiceECB.jar 实现了AES的ECB模式下的算法,允许对字符串、字节、文件的加密。 提示:Oracle在其官方网站上提供了无政策限制权限文件(Unlimited Strength Jurisdiction Policy Files),我们只需要将其部署在...

    Oracle数据库加密技术分析.pdf

    通过对Oracle数据库加密技术的分析,我们可以了解到,利用Oracle系统软件包DBMS-CRYPT()可以实现随机密钥的产生,但系统缺少密钥存储与管理的安全方法,因而仅靠数据库系统自身提供的加密手段对数据行进行保护是不够...

    RSA通过javascript加密java解密

    - 数据解密:Java端使用私钥对加密数据进行解密,这是通过执行模逆运算来实现的,与加密过程相对应。 - 解密结果:解密完成后,原始数据会恢复出来,服务器可以安全地处理这些信息。 在这个过程中,需要注意的是...

    Oracle储存过程包加解密实现

    例如,要对一个字符串进行AES加密,可以使用以下PL/SQL代码: ```sql DECLARE encrypted_data RAW(2000); key RAW(20) := HEXTORAW('0123456789ABCDEF'); -- 使用16字节的密钥 BEGIN encrypted_data := DBMS_...

    Oracle 存储过程 实现加密

    -- 使用AES加密算法加密数据 p_encrypted := DBMS_CRYPTO.ENCRYPT( src => UTL_RAW.CAST_TO_RAW(p_plain_text), typ => DBMS_CRYPTO.Cipher_AES_128, key => l_key, iv => l_iv ); END; / ``` 在这个例子中...

Global site tag (gtag.js) - Google Analytics