--加密字符串
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;
分享到:
相关推荐
**AES加密算法** AES,全称为“Advanced Encryption Standard”...通过理解AES的工作原理和C++中库的使用方法,开发者可以构建高效且安全的加密系统。在实际开发过程中,务必遵循最佳实践,确保代码的健壮性和安全性。
在不同的 Oracle 版本中(如 Oracle 9i 和 10g),加密解密的方法存在一定的差异。 #### 二、Oracle 10g 加密解密实现 在 Oracle 10g 中,主要通过 `DBMS_CRYPTO` 包来实现数据的加密和解密操作。该包提供了多种...
这个案例可能涵盖了密钥生成、加密解密过程以及异常处理等方面,帮助开发者快速理解和应用AES加密算法。 总结来说,Java版的AES加密算法提供了一种安全可靠的方式来保护数据。通过合理使用和管理密钥,结合合适的...
我们可以使用PowerBuilder数据窗口和ORACLE数据库的触发器机制来实现加密解密处理,以确保数据的安全性和性能。 知识点: 1. ORACLE数据库加密解密处理的必要性 2. ORACLE数据库加密机制 3. 透明加密、基于列的...
DES是一种对称加密算法,它使用56位的密钥对数据进行加密和解密。在Oracle中,可以使用`DBMS_OBFUSCATION_TOOLKIT`包中的`DESEncrypt`和`DESDecrypt`过程来实现。在提供的代码示例中,`encrypt_des`函数接收两个...
AES(Advanced Encryption Standard)是一种广泛使用的对称加密算法,提供了强大的安全性,尤其适用于大量数据的加密。AES256指的是使用256位密钥版本的AES,其加密强度非常高,被认为是商业级别的加密标准。 在这...
当开发者试图使用256位密钥进行AES加密时,就会遇到上述错误。 要解除这个限制,你需要做以下几步: 1. **下载不受限的JCE政策文件**:你可以从Oracle官方网站或者其他可信赖的来源下载不受限制的JCE政策文件,...
AES(Advanced Encryption Standard)是一种广泛使用的块加密算法,标准中定义了128位、192位和256位三种密钥长度的版本。...同时,理解和正确使用AES加密的各种参数和模式也是保证数据安全的重要一环。
1. **加密与解密方法**: Oracle 10g 提供了 `DBMS_CRYPTO` 包,它包含了用于加密和解密数据的函数。在示例中,`DECRYPT` 和 `ENCRYPT` 是自定义函数,它们分别用于解密和加密数据。`ENCRYPT` 函数使用 `UTL_I18N....
在Java中,如果要使用超过128位的密钥进行AES加密,需要安装Java Cryptography Extension (JCE)无限制强度Jurisdiction Policy Files,因为默认的JRE会限制使用超过128位的密钥。 首先,我们需要了解AES加密的工作...
这个包提供了对数据进行加密和解密的方法,并且可以与wrap命令结合使用,来增强数据的安全性。用户还可以使用DBMSCRYPTO包,这个包提供了更为现代化的加密和解密功能,支持多种算法,如AES和DES等。 对于安全性更高...
当在Java环境中使用AES加密时遇到 `java.security.InvalidKeyException: Illegal key size or default parameter` 这个异常,通常意味着密钥的长度超过了Java安全策略所允许的最大值。具体来说: - **非法密钥大小...
本文将深入探讨Base64编码以及几种常见的加密解密方法,并提供C#语言的源代码实现。 首先,我们来理解Base64编码。Base64是一种用于在网络上传输二进制数据的编码方式,它将任意可打印字符转换为一个可读的ASCII...
Oracle数据库提供了多种加密方法,包括透明数据加密(Transparent Data Encryption, TDE)、列级加密、数据库表空间加密和应用程序透明的高级加密标准(AES)。TDE是一种自动加密数据的方法,可以在数据写入磁盘时...
测试通过的delphi与java实现aes算法对文件进行加密和解密操作的代码,delphi端是delphi xe3,java端是oracle jdk 1.8版本,在win32和win64模式下编译测试均通过没有问题。 注意:这个示例只调整了128位aes stream方式...
AESServiceECB.jar 实现了AES的ECB模式下的算法,允许对字符串、字节、文件的加密。 提示:Oracle在其官方网站上提供了无政策限制权限文件(Unlimited Strength Jurisdiction Policy Files),我们只需要将其部署在...
通过对Oracle数据库加密技术的分析,我们可以了解到,利用Oracle系统软件包DBMS-CRYPT()可以实现随机密钥的产生,但系统缺少密钥存储与管理的安全方法,因而仅靠数据库系统自身提供的加密手段对数据行进行保护是不够...
- 数据解密:Java端使用私钥对加密数据进行解密,这是通过执行模逆运算来实现的,与加密过程相对应。 - 解密结果:解密完成后,原始数据会恢复出来,服务器可以安全地处理这些信息。 在这个过程中,需要注意的是...
例如,要对一个字符串进行AES加密,可以使用以下PL/SQL代码: ```sql DECLARE encrypted_data RAW(2000); key RAW(20) := HEXTORAW('0123456789ABCDEF'); -- 使用16字节的密钥 BEGIN encrypted_data := DBMS_...
-- 使用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; / ``` 在这个例子中...