测试环境:oracle10g
1、方法一 MD5加密
create or replace function fn_md5(input_string VARCHAR2) return varchar2
IS
raw_input RAW(128) := UTL_RAW.CAST_TO_RAW(input_string);
decrypted_raw RAW(2048);
error_in_input_buffer_length EXCEPTION;
BEGIN
sys.dbms_obfuscation_toolkit.MD5(input => raw_input,checksum => decrypted_raw);
return rawtohex(decrypted_raw);
END;
2、方法二 3des算法
create or replace package PG_ENCRYPT_DECRYPT
is
iKey varchar2(8):='Oracle9i';
function GEN_RAW_KEY ( iKey in varchar2) return raw;
function DECRYPT_3KEY_MODE(iValue in raw,iMode in pls_integer)return varchar2;
function ENCRYPT_3KEY_MODE(iValue in varchar2,iMode in pls_integer)return raw;
function FormatStr(iValue in varchar2)return varchar2;
function FormatStr2(iValue in varchar2)return varchar2;
end;
create or replace package body PG_ENCRYPT_DECRYPT
is
function GEN_RAW_KEY ( iKey in varchar2)
return raw
as
rawkey raw(240) := '';
begin
for i in 1..length(iKey) loop
rawkey := rawkey || hextoraw(to_char(ascii(substr(iKey, i, 1))));
end loop;
return rawkey;
end GEN_RAW_KEY;
/* Creating function DECRYPT_3KEY_MODE*/
FUNCTION DECRYPT_3KEY_MODE ( iValue in raw, iMode in pls_integer)return varchar2
as
vDecrypted varchar2(4000);
rawkey raw(240) := '';
begin
rawkey := GEN_RAW_KEY(iKey);-- decrypt input string
vDecrypted := dbms_obfuscation_toolkit.des3decrypt (UTL_RAW.CAST_TO_VARCHAR2(iValue), key_string => rawkey, which => iMode);
return FormatStr2(vDecrypted);
end DECRYPT_3KEY_MODE;
/*Creating function ENCRYPT_3KEY_MODE*/
FUNCTION ENCRYPT_3KEY_MODE ( iValue in varchar2, iMode in pls_integer)return raw
as
vEncrypted varchar2(4000);
vEncryptedRaw Raw(2048);
rawkey raw(240) := '';
begin
rawkey := GEN_RAW_KEY(iKey);-- encrypt input string
vEncrypted := dbms_obfuscation_toolkit.des3encrypt (FormatStr(iValue), key_string => rawkey, which => iMode);
-- convert to raw as out
vEncryptedRaw := UTL_RAW.CAST_TO_RAW(vEncrypted);
return vEncryptedRaw;
end ENCRYPT_3KEY_MODE;
function FormatStr(iValue in varchar2)return varchar2
as
begin
declare
i number;
j number;
m_value varchar2(4000);
begin
m_value:=iValue;
i:=(length(m_value) mod 8);
if i<>0 then
j:=1;
for j in 1..(8-i) loop
m_value:=m_value || '#';
end loop;
end if;
return m_value;
end;
end FormatStr;
function FormatStr2(iValue in varchar2)return varchar2
as
begin
declare
i number;
j number;
m_value varchar2(4000);
begin
m_value:=iValue;
i:=instr(iValue,'#',1,1);
if i>0 then
m_value:=substr(m_value,1,i-1);
end if;
return m_value;
end;
end FormatStr2;
end PG_ENCRYPT_DECRYPT;
分享到:
相关推荐
### Oracle接收长度大于4000的字符串 在Oracle数据库中,默认情况下,`VARCHAR2`类型字段的最大长度为4000个字符。当需要处理更长的字符串时(例如,超过4000个字符),可以采用多种方法来解决这一问题。本文将详细...
### ASP.NET Oracle连接字符串详解 在开发基于ASP.NET的应用程序时,经常需要与Oracle数据库进行交互。为了确保数据能够正确地被读取、写入,一个正确的连接字符串至关重要。本文将详细探讨如何设置一个适用于ASP...
在IT领域,尤其是在数据库安全...总结而言,Oracle提供了多种方法来实现MD5加密,从简单的内置函数到自定义包的创建,每种方法都有其适用场景。理解这些方法及其工作原理,对于开发安全可靠的数据库应用程序至关重要。
本文将详细介绍Oracle9i中的用户加密算法,特别是DES(Data Encryption Standard)加密解密方法。 #### 二、Oracle9i用户加密算法背景 Oracle9i是Oracle公司发布的一款关系型数据库管理系统,它提供了丰富的功能和...
首先,文本被转换为RAW类型,然后用密钥进行加密,最后将加密后的RAW数据转换为十六进制字符串返回。解密函数`decrypt_des`则相反,它接收加密后的文本和密钥,解密后去除末尾的填充字符并返回原始文本。 2. **MD5...
本文将详细探讨标题中提到的四个数据库系统——jtds、MySQL、Oracle和SQL Server的驱动程序及其连接字符串。 首先,jtds是一个开源的Java数据库连接器,主要支持Microsoft SQL Server和Sybase数据库。它的优点在于...
在加密过程中,该工具可能采用了某种加密算法对Base64编码后的字符串进行加密,增加了一层额外的安全防护。 【描述解析】 "图片与Base64加密码字符串相互转换工具 带源码" 意味着提供给用户的不仅仅是可执行的应用...
在探讨“ArcSDE直连方法(直连字符串)”这一主题时,我们首先需要理解ArcSDE的基本概念以及直连技术的应用场景。ArcSDE是Esri开发的一款空间数据库引擎,它允许地理信息系统(GIS)软件直接访问并管理存储在关系型...
- **字符串填充**:由于 DES 加密要求输入字符串长度必须是 8 的倍数,因此使用 `RPAD` 函数对字符串进行填充。 - **加密过程**:调用 `DBMS_OBFUSCATION_TOOLKIT.DES_ENCRYPT` 进行加密,其中 `INPUT_STRING` 参数...
数据库连接字符串是应用程序与数据库建立连接的关键配置,用于指定服务器地址、数据库名、用户名和密码等信息...同时,根据具体需求,可能需要调整连接字符串中的参数,如使用连接池优化性能或启用SSL加密增强安全性。
ADO.NET是Microsoft开发的一种数据访问技术,用于与各种数据库进行交互。...在实际应用中,确保连接字符串的安全性也很重要,避免明文存储敏感信息,如密码,应使用配置文件或加密手段来管理这些信息。
这个函数允许你将已存在的 PL/SQL 代码加密成一个字符串,返回的字符串可以直接执行创建加密的存储过程。有三个重载版本,接受不同类型的输入参数,如单个 `VARCHAR2` 或数组。 - `dbms_ddl.create_wrapped` 此...
在"01C-连接字符串生成器.swf"这个文件中,很可能是通过互动的方式,演示了如何输入这些信息并生成适用于不同数据库系统的连接字符串,例如SQL Server、MySQL、Oracle或者SQLite等。通过观看这个教程,你可以更加...
ADO.NET(ActiveX Data Objects .NET)是微软提供的一个数据访问技术,用于在.NET应用程序中与各种数据库进行交互。...此外,为了安全性,连接字符串中的敏感信息(如密码)通常应加密存储,而不是明文显示。
cx_Oracle模块还包含一些实用工具和扩展方法,例如cx_Oracle.Binary()用于创建二进制字符串值对象,cx_Oracle.clientversion()用于返回所使用的客户端库版本信息。请注意,cx_Oracle.clientversion()是一个扩展方法...
Oracle的连接字符串采用JDBC URL格式,例如: ``` jdbc:oracle:thin:@hostname:port:sid ``` 其中,`hostname`是服务器名,`port`是监听的端口号(默认1521),`sid`是系统识别号,代表数据库实例。 4. **...
Oracle数据库连接需要`classes12.zip`中的`oracle.jdbc.driver.OracleDriver`,连接字符串示例: ``` "jdbc:oracle:thin:@MyDbComputerNameOrIP:1521:ORCL" ``` 5. **Sybase**: Sybase数据库连接使用`jconn2....
7. **Easy Connect命名方法**: Oracle 19c支持Easy Connect命名方法,允许用户通过简单的字符串格式(如`username/password@//hostname:port/service_name`)来连接数据库,无需tnsnames.ora文件。 8. **安全增强**...
`ENCRYPT` 函数使用 `UTL_I18N.STRING_TO_RAW` 将输入的字符串转换为 RAW 类型,然后使用 `DBMS_CRYPTO.ENCRYPT` 进行加密。而 `DECRYPT` 函数则使用 `DBMS_CRYPTO.DECRYPT` 对 RAW 类型的数据进行解密,并通过 `UTL...
代码结构:函数采用PL/SQL编写,利用了字符串处理函数的强大能力,确保转换过程的准确性和效率。 错误处理:内置了异常处理机制,能够智能识别并处理非标准输入,避免程序运行中断。 数据分析:在进行大数据分析或...