当前位置:首页 » 密码管理 » oracledes加密解密

oracledes加密解密

发布时间: 2023-03-22 15:13:27

① 如何利用Oracle自带的MD5对数据进行加密

1、DBMS_OBFUSCATION_TOOLKIT.MD5是MD5编码的数据包函数
CREATE OR REPLACE FUNCTION MD5(passwd IN VARCHAR2)
RETURN VARCHAR2
IS
retval varchar2(32);
BEGIN
retval := utl_raw.cast_to_raw(DBMS_OBFUSCATION_TOOLKIT.MD5(INPUT_STRING => passwd)) ;
RETURN retval;
END;
select md5('123456') from al;
MD5('123456')


2、DES加密
create or replace function
encrypt_des(p_text varchar2, p_key varchar2) return varchar2 is
v_text varchar2(4000);
v_enc varchar2(4000);
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;
DES加密:
update tb_salarysign_staff s set s.staffpwd =encrypt_des(s.staffpwd, 'test#5&124*!de');
3、DES解密函数
create or replace function decrypt_des(p_text varchar2,p_key varchar2) return varchar2 is
v_text varchar2(2000);
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;
DES解密:select decrypt_des(s.staffpwd, 'test#5&124*!de') from tb_salarysign_staff s;

② Oracle数据库中MD5解密方法是什么

MD5解密方法x0dx0a我在存储数据库的时候,通过md5加密方法将字段进行加密,当我在读取该字段时如何正确的读取原来的值啊x0dx0a------解决方案--------------------x0dx0a没办法,MD5是不可逆的。x0dx0a你需要使用可逆加密算法。x0dx0a------解决方案--------------------x0dx0a插入表中的时候md5加密x0dx0a樱扰比如:x0dx0a$sql= "insert into register(names,pswd,repswd) values( '$_POST[names] ',md5( '$_POST[pswd] '),md5( '$_POST[repswd] ')) ";x0dx0a$qid=mysql_query($sql);x0dx0a读取的时候x0dx0a$pswd=empty($_POST[ 'pswd '])? ' ':md5($_POST[ 'pswd ']);x0dx0a------解决方案--------------------x0dx0a如果业务要求可还原,那么不要采用MD5,请使用可逆加密算法,如DES加密。x0dx0aMD5为不可逆散列算法,可用于存储用户密码,存储后不需要永远不需要知道明文。密码比较时只需将用户输入的密码再次转成MD5码与存储的相比脊碰旦较即可得知用户输入密码是否正确。x0dx0alinux/unix操作系统一般采用MD5进行用户密码加密。x0dx0a------解决方案--------------------x0dx0aMD5目前所谓的破解只是采用碰撞法找到了对等因子。x0dx0a比如:string1的MD5码为MD1,而现在我们做到的只是又找到了一个string2,它的MD5码也是MD1。x0dx0a结果就是:用户登陆某采用MD5加密的系统时,本来密码是12345,现在可能用abcde也能登陆。x0dx0a想想可能还原吗?如果吵纤可以还原,那天大的信息也能用32位长的字符串表示了,这不成了超级压缩算法了吗,整个宇宙的信息都可以用32位长表示了。不可逆的!

③ oracle 3des加密key的位数为32怎么办

Des的密钥是8个字节,但实际上只有7个用上,也就是56位。
3des是用3个或2个des密钥加密一串明文,最少112位最多168位。也就是14~21个字母或数字符号。

从凯档庆安全性上来说密钥位数不足是不能加密的,但有些软件为了保证用户可用,会自动使用某种策略盯握自动填充满,一般是重复填充或采用特定字符,如果你只填了1234作为密钥蠢拆,有可能真正用于加密的密钥是123412341234123412341或者123400000000000000000类似的。

另外请注意,最好去做3des的密钥位数不是7或8,因为des的加密解密是同一个过程,这样搞在填充后实际上是只使用了一次des加密••••••还不如5位6位好••••••

④ oracle 字段加密

这是程序加密的,具体的你要看代码采用的是什么加密算法,常见的是MD5加密

⑤ oracle 怎么解密db2加密后的数据

通过配置本地数据库的tns配置文件实现:
去oracle安装目录下oracle\proct\10.2.0\db_2\NETWORK\ADMIN\ 找到tnsnames.ora,用记事本打开,猜春雀里边有远程数据库的tns连接配置串如下
ORCL23 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.3.23)(PORT = 1521))
)
(CONNECT_DATA =
(SID = ORCL)
)
)
添加好ip、端口和目标数据库的实例名(SID),然后确保tns名称(ORCL23)在整个文森码档中唯一,保存后打开数据库连接工具,输入远程穗早数据库上的用户名密码,选择数据库对象为你配置的连接名就可以了

⑥ 如何在oracle 10g r2中实现透明数据加密

设置加密密钥:
Oracle 透明数据加密提供了实施加密所必需的关键管理基础架构。 加密的工作原理是将明文数据以及秘密(称作密钥)传递到加密程序中。 加密程序使用提供的密钥对明文数据进行加密,然后返回加密数据。 以往,创建和维护密钥的任务由应用程序完成。 Oracle 透明数据加密通过为整个数据库自动生成一个万能密钥解决了此问题。 在启动 Oracle 数据库时,管理员必须使用不同于系统口令或 DBA 口令的口令打开一个 Oracle Wallet 对象。 然后,管理员对数据库万能密钥进行初始化。 万能密钥是自动生成的。
性能:
由于索引数据未被加密,因此加密通常会影响现有的应用程序索引。 Oracle 透明数据加密对与给定应用程序表关联的索引值进行加密。 这意味着应用程序中的相等搜索对性能的影响很小,甚至没有任何影响。 例如,假设应用程序 card_id存在一个索引,并且此应用程序执行以下语句:
SQL> Select cash from credit_card where card_id = '1025023590';
Oracle 数据库将使用现有的应用程序索引,尽管 card_id信息已经在数据库中加密。
准备用于加密的数据库:
在本部分内容中,您将更新 sqlnet.ora、创建一个加密钱夹 (ewallet.p12)、打开此钱夹并为 TDE创建万能密钥。执行以下操作:
1. 您需要更新 sqlnet.ora 文件以包含一个 ENCRYPTED_WALLET_LOCATION 条目。打开一个终端窗口,然后输入以下命令:
cd $ORACLE_HOME/network/admin
gedit sqlnet.ora
将以下条目添加到文件末尾:
ENCRYPTION_WALLET_LOCATION=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=/opt/oracle/admin/test97/wallet/)))
如果不加这一项的话,则会提示下面错误:

SQL> alter system set key identified by "hurray"
2 ;
alter system set key identified by "hurray"
*
ERROR at line 1:
ORA-28368: cannot auto-create wallet

/opt/oracle/admin/test97/wallet/ 目录是用来存放生成的钱夹的。
可以为加密钱夹选择任何目录,但路径不应指向在数据库安装过程中创建的标准模糊钱夹(cwallet.sso)。
2. 接下来,您需要打开钱夹并创建万能加密密钥。从终端窗口中,输入以下命令:
connect / as sysdbaalter system set key identified by "welcome1";
此命令的作用为:
l 如果指定的目录中不存在加密钱夹,则将创建加密钱夹 (ewallet.p12)、打开此钱夹并创建/重新创建 TDE 的万能密钥。
l 如果指定目录中存在加密钱夹,则将打开此钱夹并创建/重新创建 TDE 的万能密钥。
之后,就可以测试数据了。
下面是实验记录:

alter system set key identified by "welcome1";
SQL> conn dodd/dodd123
create table test (id number,credit_card_number varchar2(16) ENCRYPT NO SALT);
SQL> insert into test values(1,'1231243242');
1 row created.
SQL> insert into test values(2,'33245235');
SQL> commit;
Commit complete.
SQL> select * from test;
ID CREDIT_CARD_NUMB
---------- ----------------
1 1231243242
2 33245235

可见,数据查看是明文,因为这个时候,加密钱夹已经打开,数据可以解密。
这时,停止数据库,再打开:

SQL> shutdown immediate

Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> SQL> startup
ORACLE instance started.

Total System Global Area 524288000 bytes
Fixed Size 1979968 bytes
Variable Size 138414528 bytes
Database Buffers 377487360 bytes
Redo Buffers 6406144 bytes
Database mounted.
Database opened.

SQL> select * from dodd.test;
select * from dodd.test
*
ERROR at line 1:
ORA-28365: wallet is not open

SQL> select id from dodd.test;

ID
----------
1
2

可以看到,因为数据库重启后,加密钱夹处于关闭状态,这时只要查询到加密的列,会提示加密钱夹没有打开。
如果用户想打开钱夹,必须具有alter system权限。
下面打开wallet:

SQL> conn / as sysdba
Connected.
SQL> alter system set wallet open identified by "welcome1";

System altered.

SQL> conn dodd/dodd123
Connected.

SQL> select * from test;

ID CREDIT_CARD_NUMB
---------- ----------------
1 1231243242
2 33245235

可以看到,加密钱夹打开后,数据可以被解密。
还有一条:sys用户的表不能被加密。
可见:Oracle TDE是在数据层面上对表里的数据加密,而且不会影响数据库现有的权限控制策略。
salt实际上就是在加密过程中引入一个随机性。简单的说,就是一般来说,同样的明文产生同样的密文,这样就导致容易被解密者通过分析词频之类的方式(加解密我不太懂)来通过密文破解明文,如果指定salt,那么即使同样的明文加密后的密文也是不一样的。
no salt的话,自然就是相同的明文会产生相同的密文了。对于索引来说,要求no salt也就可以理解了
丢失ewallet加密钱夹的话,是不能再解密数据的。
Oracle 10gR2的 TDE 特性,对于防止机密信息的泄漏能起到事半功倍的作用!

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

(1)DES加密函数
create
or
replace
function
encrypt_des(p_text
varchar2,
p_key
varchar2)
return
varchar2
is
v_text
varchar2(4000);
v_enc
varchar2(4000);
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;
(2)DES解密函数
create
or
replace
function
decrypt_des(p_text
varchar2,p_key
varchar2)
return
varchar2
is
v_text
varchar2(2000);
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;
(3)MD5加密函数
CREATE
OR
REPLACE
FUNCTION
MD5(passwd
IN
VARCHAR2)
RETURN
VARCHAR2
IS
retval
varchar2(32);
BEGIN
retval
:=
utl_raw.cast_to_raw(DBMS_OBFUSCATION_TOOLKIT.MD5(INPUT_STRING
=>
passwd))
;
RETURN
retval;
END;
(4)函数使用示例
DES加密:
update
tb_salarysign_staff
s
set
s.staffpwd
=encrypt_des(s.staffpwd,
'test#5&124*!de');
DES解密:select
decrypt_des(s.staffpwd,
'test#5&124*!de')
from
tb_salarysign_staff
s
MD5加密:
update
tb_salarysign_staff
s
set
s.staffpwd
=
md5(s.staffpwd);

⑧ Oracle数据库中文件加密详解

在Oracle数据库系统中 用户如果要以特权用户身份登录Oracle数据库可以有两种身份验证的方法 即使用与操作系统集成的身份验证或使用Oracle数据库的密码文件进行身份验证 因此 管理好密码文件 对于控制授权用户从远端或本机登录Oracle数据库系统 执行数据库管理工作 具有重要的意义

Oracle数据库的密码文件存放有超级用户INTERNAL/SYS的口令及其他特权用户的用户名/口令 它一般存放在ORACLE_HOMEDATABASE目录下

创建密码文件

在使用Oracle Instance Manager创建一数据库实例的时侯 在ORACLE_HOMEDATABASE目录下还自动创建了一个与之对应的密码颤喊派文件 文件名为PWDSID ORA 其中SID代表相应的Oracle数据库系统标识符 此密码文件是进行初始数据库管理工作的基矗在此之后 管理员也可以根据需要 使用工具ORAPWD EXE手工创建密码文件 命令格式如下

C: >ORAPWDFILE=< FILENAME >PASSWORD =< PASSWORD > ENTRIES=< MAX_USERS >

各命令参数的含义为

FILENAME 密码文件名;

PASSWORD 设置INTERNAL/SYS帐号的口令

MAX_USERS 密码文件中可以存放的最大用户数 对应于允许以SYSDBA/SYSOPER权限登录数据库的最大用户数 由于在以后的维护中 若用户数超出了此限制 则需要重建密码文件 所以此参数可以根据需要设置得大一些

有了密码文件之后 需要设置初始化参数REMOTE_LOGIN_PASSWORDFILE来控制密码文件的使用状态

设置初始化参数

在Oracle数据库实例的初始化参数文件中 此参数控制着密码文件的使用及其状态 它可以有以下几个选项

NONE 指示Oracle系统不使用密码文件 特权用户的登录通过操作系统进行身份验证

EXCLUSIVE 指示只有一个数据库实例可以使用此密码文件 只有在此设置下的密码文件可以包含有除INTERNAL/SYS以外的用户信息 即允渗咐许将系统权限SYSOPER/SYSDBA授予除INTERNAL/SYS以外的其他用户

SHARED 指示可有多个数据库实例可以使用此密码文件 在此设置下只有INTERNAL/SYS帐号能被密码文件识别 即使文件中存有其他用户的信息 也不允许他们以SYSOPER/SYSDBA的权限登录 此设置为缺省值

在REMOTE_LOGIN_PASSWORDFILE参数设置为EXCLUSIVE SHARED情况下 Oracle系统搜索密码文件的次序为 在系统注册库中查找ORA_SID_PWFILE参数值(它为密码文件的全路径名);若未找到 则查找ORA_PWFILE参数值;若仍未找到 则使用缺省值ORACLE_HOMEDATABASEPWDSID ORA;其中的SID代表相应的Oracle数据库系统标识符

向密码文件中增加 删除用户

当初始化参数REMOTE_LOGIN_PASSWORDFILE设置为EXCLUSIVE时 系统允许除INTERNAL/SYS以外的其他用户以管理员身份从远端或本机登录到Oracle数据库系统 执行数据库管理工作;这些用户名必须存在于密码文件中 系统才能识别他们 由于不管是在创建数据库实例时自动创建的密码文件 还是使用工具ORAPWD EXE手工创建的密码文件 都只包含INTERNAL/SYS用户的信息;为此 在实际操作中 可能需要向密码文件添加或删除其他用户帐号

由于仅被授予SYSOPER/SYSDBA系统权限的用户才存在于密码文件中 所以当向某一用户授予或收茄贺回SYSOPER/SYSDBA系统权限时 他们的帐号也将相应地被加入到密码文件或从密码文件中删除 由此 向密码文件中增加或删除某一用户 实际上也就是对某一用户授予或收回SYSOPER/SYSDBA系统权限

要进行此项授权操作 需使用SYSDBA权限(或INTERNAL帐号)连入数据库 且初始化参数REMOTE_LOGIN_PASSWORDFILE的设置必须为EXCLUSIVE 具体操作步骤如下

创建相应的密码文件;

设置初始化参数REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE;

使用SYSDBA权限登录 CONNECTSYS/internal_user_passswordASSYSDBA;

启动数据库实例并打开数据库;

创建相应用户帐号 对其授权(包括SYSOPER和SYSDBA) 授予权限 GRANTSYSDBATOuser_name;

收回权限 REVOKESYSDBAFROMuser_name 现在这些用户可以以管理员身份登录数据库系统了

使用密码文件登录

有了密码文件后 用户就可以使用密码文件以SYSOPER/SYSDBA权限登录Oracle数据库实例了 注意初始化参数REMOTE_LOGIN_PASSWORDFILE应设置为EXCLUSIVE或SHARED 任何用户以SYSOPER/SYSDBA的权限登录后 将位于SYS用户的Schema之下 以下为两个登录的例子

以管理员身份登录

假设用户scott已被授予SYSDBA权限 则他可以使用以下命令登录

CONNECTscott/tigerASSYSDBA

以INTERNAL身份登录

CONNECTINTERNAL/INTERNAL_PASSWORD

保护密码文件

查看密码文件中的成员

可以通过查询视图V$PWFILE_USERS来获取拥有SYSOPER/SYSDBA系统权限的用户的信息 表中SYSOPER/SYSDBA列的取值TRUE/FALSE表示此用户是否拥有相应的权限 这些用户也就是相应地存在于密码文件中的成员

修改密码文件的状态

密码文件的状态信息存放于此文件中 当它被创建时 它的缺省状态为SHARED 可以通过改变初始化参数REMOTE_LOGIN_PASSWORDFILE的设置改变密码文件的状态 当启动数据库事例时 Oracle系统从初始化参数文件中读取REMOTE_LOGIN_PASSWORDFILE参数的设置;当加载数据库时 系统将此参数与口令文件的状态进行比较 如果不同 则更新密码文件的状态 若计划允许从多台客户机上启动数据库实例 由于各客户机上必须有初始化参数文件 所以应确保各客户机上的初始化参数文件的一致性 以避免意外地改变了密码文件的状态 造成数据库登陆的失败

修改密码文件的存储位置

密码文件的存放位置可以根据需要进行移动 但作此修改后 应相应修改系统注册库有关指向密码文件存放位置的参数或环境变量的设置

删除密码文件

lishixin/Article/program/Oracle/201311/16762

⑨ 关于oracle数据库加密的函数

在程序里面把密码加密之后保存到数据库就好了。/抠鼻

⑩ oracle的加密包,dbms_crypto的用法怎么用,我是一个初学者,对oracle编程不明白,求大神解答!

加密类型:DBMS_CRYPTO.ENCRYPT_AES256+DBMS_CRYPTO.CHAIN_CBC+DBMS_CRYPTO.PAD_PKCS5
盐值/Key值/密钥:1q2wa3es4rz5tx6ycD*UF8tif9ogjen2
你把解密的结合起来看看就知道所以然了。

热点内容
我的世界服务器如何卡穿墙 发布:2025-05-13 17:52:41 浏览:735
为什么游戏更新连接不到服务器 发布:2025-05-13 17:44:09 浏览:786
谷歌play商店如何连接服务器 发布:2025-05-13 17:38:11 浏览:481
ssl认证服务器搭建 发布:2025-05-13 17:33:42 浏览:890
cpul2缓存 发布:2025-05-13 17:32:09 浏览:450
编译是语言的特点 发布:2025-05-13 17:31:36 浏览:583
原神怎么看服务器版本 发布:2025-05-13 17:09:14 浏览:73
java连接符 发布:2025-05-13 17:05:44 浏览:57
hadoop删除文件夹 发布:2025-05-13 17:00:14 浏览:509
sql数据库远程备份 发布:2025-05-13 16:48:13 浏览:528