Oracle 实现 加密与解密

合集下载

数据库中数据加密与解密的流程与实现要点

数据库中数据加密与解密的流程与实现要点

数据库中数据加密与解密的流程与实现要点数据库中的数据加密与解密是保护数据安全的重要手段之一。

在数据库中存储的数据可能涉及个人隐私、商业机密等敏感信息,如果不采取必要的加密措施,可能会面临数据泄露、篡改或滥用的风险。

因此,对数据库中的数据进行加密与解密是确保数据安全的关键步骤。

数据加密通过对敏感数据进行编码转换,使其变得不可读或不可理解,只有掌握相应的密钥才能进行解密操作。

数据加密可以在数据传输、数据存储以及数据处理等阶段进行,以确保数据的安全性。

下面将介绍数据库中数据加密与解密的流程与实现要点。

首先,数据加密的流程通常分为以下几个步骤:1. 选择适当的加密算法:在数据库中使用的常见加密算法有对称加密和非对称加密。

对称加密使用相同的密钥进行加密和解密,适用于数据传输和数据存储等场景。

非对称加密使用公钥和私钥进行加密和解密,适用于数据的安全交换和数字签名等场景。

根据具体需求选择合适的加密算法和密钥长度。

2. 生成密钥:根据选择的加密算法生成相应的密钥。

对称加密只需生成一个密钥,而非对称加密需要生成一对密钥,包括公钥和私钥。

3. 进行加密操作:使用选定的加密算法和生成的密钥对数据进行加密操作。

对称加密将明文数据和密钥作为输入,输出加密后的密文数据。

非对称加密使用接收方的公钥进行加密,发送方使用接收方的公钥进行数据加密,保证加密数据只能由接收方使用私钥进行解密。

4. 存储密钥:加密后的数据和密钥需要存储在数据库中。

密钥的安全性同样重要,应采取适当的措施保证密钥的安全性,如密钥分离、密钥轮换等。

5. 数据传输与存储:加密后的数据可通过网络传输或存储于数据库中。

在数据传输过程中,对称加密通常使用传输中的密钥进行加密和解密操作,而非对称加密则使用接收方的公钥进行加密。

其次,数据解密的流程通常包含以下步骤:1. 获取密钥:在解密数据之前,首先需要获取相应的密钥。

对称加密使用同一个密钥进行加密和解密,而非对称加密需要使用私钥进行解密。

oracle 字段加密解密方法

oracle 字段加密解密方法

(原创实用版3篇)编制人员:_______________审核人员:_______________审批人员:_______________编制单位:_______________编制时间:____年___月___日序言下面是本店铺为大家精心编写的3篇《oracle 字段加密解密方法》,供大家借鉴与参考。

下载后,可根据实际需要进行调整和使用,希望能够帮助到大家,谢射!(3篇)《oracle 字段加密解密方法》篇1Oracle 提供了 DBMS_CRYPTO 包来进行字段加密和解密操作。

在使用此包前,需要先创建一个密钥,可以使用 DES、AES 等算法进行加密。

以下是使用 AES 算法进行加密的步骤:1.创建一个密钥:```CREATE OR REPLACE SYSTEM GENERATED ALWAYS AS NEEDED CREDENTIALS DES_KEY;```2.使用密钥进行加密:```SELECT DBMS_CRYPTO.ENCRYPT(平原文本,DES_KEY) FROM 表名;```3.解密加密后的字段:```SELECT DBMS_CRYPTO.DECRYPT(加密后的字段,DES_KEY) FROM 表名;```其中,平原文本是需要加密的字符串,DES_KEY 是加密密钥。

在解密时,需要使用相同的密钥进行解密。

需要注意的是,加密和解密操作都需要使用 sys 用户进行操作,因为该用户拥有足够的权限来使用 DBMS_CRYPTO 包。

《oracle 字段加密解密方法》篇2Oracle 提供了 DBMS_CRYPTO 包来支持字段加密和解密操作。

在使用此包之前,需要先创建一个密钥,可以使用 DBMS_CRYPTO.GENERATE_KEY 函数生成一个随机密钥,也可以使用 DBMS_CRYPTO.HASH_KEY 函数将一个字符串作为输入生成密钥。

对于加密操作,可以使用 DBMS_CRYPTO.ENCRYPT 函数,将明文字符串和密钥作为输入,返回加密后的密文字符串。

数据库中数据加密与解密的流程与实现要点解析及实际应用案例分析分享

数据库中数据加密与解密的流程与实现要点解析及实际应用案例分析分享

数据库中数据加密与解密的流程与实现要点解析及实际应用案例分析分享数据加密与解密是保护数据安全的重要手段,数据库中的数据加密和解密流程及实现要点的解析对于保护敏感信息至关重要。

本文将分析数据库中数据加密与解密的流程和实现要点,并通过一个实际应用案例进行分享。

一、数据库中数据加密与解密的流程在数据库中,数据加密和解密的流程大致可以分为以下几个步骤:1. 确定加密需求:首先要明确要加密的数据对象,是整个数据库还是特定的表、列或字段。

同时也要确定采用哪种加密算法和密钥管理方式。

2. 数据分类和分类加密:根据数据的敏感程度,将数据进行分类。

对于高度敏感的数据,使用较高级别的加密算法和密钥进行加密;对于一般敏感的数据,可以使用适当的加密算法进行加密。

3. 生成密钥和管理密钥:选择合适的密钥生成方式,可以使用对称密钥或非对称密钥。

对称密钥加密的方式简单、高效,但是密钥分发和管理较为复杂;非对称密钥加密的方式较为安全,但是加解密过程相对较慢。

4. 数据加密和解密操作:使用合适的加密算法和密钥对数据进行加密和解密操作。

加密操作将明文数据转化为密文数据,解密操作将密文数据转化为明文数据。

5. 密钥的保护和管理:密钥的保护十分重要,可以采用硬件安全模块(HSM)等方式对密钥进行保护。

同时还需要建立密钥的有效期、权限控制和密钥归档等管理机制。

二、数据库中数据加密与解密的实现要点1. 数据分类和属性选择:根据数据的敏感程度,将数据进行分类。

同时需要选择合适的加密算法和密钥管理方式。

一般敏感的数据可以选择对称加密算法,如AES等;对于高度敏感的数据可以选择非对称加密算法,如RSA等。

2. 密钥生成与管理:根据加密算法的不同,选择合适的密钥生成和管理方式。

对称加密算法中,密钥的生成可以使用随机数生成器;密钥的管理可以使用密钥分发中心(KDC)或密钥管理系统(KMS)。

非对称加密算法中,需要生成公钥和私钥,其中公钥可以发布到公开的地方,私钥需要严格保护。

oracle10g加密解密

oracle10g加密解密

第一种:数据库表保存密钥我要介绍的是oracle10g的数据加密处理,也就是通常的密码的加密处理,要用到DECRYPT方法对数据解密和ENCRYPT方法加密1.首先通过sys用户登录到oracle数据库,因为我们要通过这个用户来设置一些高级权限grant execute on DBMS_crypto to userName;这句是为了能让用户使用dbms这个方法,能够让我们sql语句种直接简单的调用就可以了,否则我们将无法使用加密和解密,数据库也会报错,不过我忘了是什么错误了,userName就是你通过程序访问数据库时的用户名,2.然后要建立一张表,这张表里就一个字段是用来存放一个key值,这个key值是要在接下来建立的方法种使用到的固定值CREATE TABLE KEYINFOMTBL(KEYCODE RAW(32) NOT NULL,CONSTRAINT KEYINFOMTBL_P PRIMARY KEY (KEYCODE)USING INDEX)/INSERT INTO KEYINFOMTBL V ALUES ( DBMS_CRYPTO.RANDOMBYTES (32) )通过这个两个sql语句建立表,并给表插入一条数据,注意字段的类型是raw型的,这个也是oracle数据库种加密要用的字段类型。

3.就是要建立一个方法,要对数据进行加密处理了,这也是关键的一个部分,我以前在网上看到很多文章来说明这个过程,但试了很多都不好用,我现在给出的例子完全好用,这也是我现在做的项目中使用的CREATE OR REPLACE FUNCTION ENCRYPT(INPUT_STRING V ARCHAR2)RETURN RAWISENCRYPTED_RAW RAW (4000);KEY_BYTES_RAW RAW (32);ENCRYPTION_TYPE PLS_INTEGER :=DBMS_CRYPTO.ENCRYPT_AES256+ DBMS_CRYPTO.CHAIN_CBC+ DBMS_CRYPTO.PAD_PKCS5;BEGINSELECT KEYCODE INTO KEY_BYTES_RAW FROM KEYINFOMTBL; ENCRYPTED_RAW := DBMS_CRYPTO.ENCRYPT(SRC => UTL_I18N.STRING_TO_RAW (INPUT_STRING, 'AL32UTF8'),TYP => ENCRYPTION_TYPE,KEY => KEY_BYTES_RAW);RETURN ENCRYPTED_RAW;END;这个方法为什么这样写,还要请oracle的高手来说明了,本人也不是很了解啊!嘿嘿4.就是要建立一个解密的方法了,CREATE OR REPLACE FUNCTION DECRYPT(INPUT_RAW RAW)RETURN V ARCHAR2ISOUTPUT_STRING V ARCHAR2(4000);DECRYPTED_RAW RAW (4000);KEY_BYTES_RAW RAW (32);ENCRYPTION_TYPE PLS_INTEGER :=DBMS_CRYPTO.ENCRYPT_AES256+ DBMS_CRYPTO.CHAIN_CBC+ DBMS_CRYPTO.PAD_PKCS5;BEGINSELECT KEYCODE INTO KEY_BYTES_RAW FROM KEYINFOMTBL;DECRYPTED_RAW := DBMS_CRYPTO.DECRYPT(SRC => INPUT_RAW,TYP => ENCRYPTION_TYPE,KEY => KEY_BYTES_RAW);OUTPUT_STRING := UTL_I18N.RAW_TO_CHAR (DECRYPTED_RAW, 'AL32UTF8');RETURN OUTPUT_STRING;END;/5.我现在要给出一个可以应用这个两个加密和解密的小的例子,可以很明显的看到是如何应用的你可以通过这个sql语句看一下我们在KEYINFOMTBL表种存的那个字段值是什么select UTL_I18N.RAW_TO_CHAR (KEYCODE, 'AL32UTF8') from KEYINFOMTBL;create table testpw(password raw(20))/使用插入的时候只要用ENCRYPT() 就可以将你的字符串加密了insert into testpw values ( ENCRYPT('nvgwngw383$') );你可以通过这个sql语句看到加密以后的数据效果select UTL_I18N.RAW_TO_CHAR (password, 'AL32UTF8') from testpw;通过下面的sql语句就可以将数据进行解密处理select DECRYPT(password) from testpw;第二种:写死密钥1.首先通过sys用户登录到oracle数据库,因为我们要通过这个用户来设置一些高级权限grant execute on DBMS_crypto to userName;这句是为了能让用户使用dbms这个方法,能够让我们sql语句种直接简单的调用就可以了,否则我们将无法使用加密和解密,数据库也会报错,不过我忘了是什么错误了,userName就是你通过程序访问数据库时的用户名2.执行sql,得到keycodeselect DBMS_CRYPTO.RANDOMBYTES(32)from dual3.就是要建立一个方法,要对数据进行加密处理了,这也是关键的一个部分,我以前在网上看到很多文章来说明这个过程,但试了很多都不好用,我现在给出的例子完全好用,这也是我现在做的项目中使用的CREATE OR REPLACE FUNCTION ENCRYPT(INPUT_STRING VARCHAR2)RETURN RAWISENCRYPTED_RAW RAW(4000);KEY_BYTES_RAWRAW(32):='42067A1A927255777EB3C7E6317C255B6C7372A1AFB2379A8ECBE6B9B09 4AC4A';--第二步生成的keycode就是替换这里的ENCRYPTION_TYPE PLS_INTEGER:=DBMS_CRYPTO.ENCRYPT_AES256+DBMS_CRYPTO.CHAIN_CBC+DBMS_CRYPTO.PAD_PKCS5;BEGINENCRYPTED_RAW :=DBMS_CRYPTO.ENCRYPT(SRC => UTL_I18N.STRING_TO_RAW (INPUT_STRING,'AL32UTF8'),TYP => ENCRYPTION_TYPE,KEY=> KEY_BYTES_RAW);RETURN ENCRYPTED_RAW;END;/这个方法为什么这样写,还要请oracle的高手来说明了,本人也不是很了解啊!嘿嘿4.就是要建立一个解密的方法了,CREATE OR REPLACE FUNCTION DECRYPT(INPUT_RAW RAW)RETURN VARCHAR2ISOUTPUT_STRING VARCHAR2(4000);DECRYPTED_RAW RAW(4000);KEY_BYTES_RAWRAW(32):='42067A1A927255777EB3C7E6317C255B6C7372A1AFB2379A8ECBE6B9B09 4AC4A'; --第二步生成的keycode就是替换这里的,与第三步要相同ENCRYPTION_TYPE PLS_INTEGER:=DBMS_CRYPTO.ENCRYPT_AES256+DBMS_CRYPTO.CHAIN_CBC+DBMS_CRYPTO.PAD_PKCS5;BEGINDECRYPTED_RAW :=DBMS_CRYPTO.DECRYPT(SRC => INPUT_RAW,TYP => ENCRYPTION_TYPE,KEY=> KEY_BYTES_RAW);OUTPUT_STRING := UTL_I18N.RAW_TO_CHAR (DECRYPTED_RAW,'AL32UTF8');RETURN OUTPUT_STRING;END;/5.我现在要给出一个可以应用这个两个加密和解密的小的例子,可以很明显的看到是如何应用的你可以通过这个sql语句看一下我们在KEYINFOMTBL表种存的那个字段值是什么select UTL_I18N.RAW_TO_CHAR (KEYCODE, 'AL32UTF8') from KEYINFOMTBL;create table testpw(password raw(20))/使用插入的时候只要用ENCRYPT() 就可以将你的字符串加密了insert into testpw values ( ENCRYPT('nvgwngw383$') );你可以通过这个sql语句看到加密以后的数据效果select UTL_I18N.RAW_TO_CHAR (password, 'AL32UTF8') from testpw;通过下面的sql语句就可以将数据进行解密处理select DECRYPT(password) from testpw;第三种: 密钥的保存不管我们用什么样的加密算法,有一点非常重要的是: 密钥的保存.密钥就是一把钥匙,因为加密算法是公开的,所以你无论如何加密,只要我知道你的密钥,我就可以解密,那么你的加密就没有效果.在本文中, 我们的密钥是这样定义的:-KEY_BYTES_RAWRAW(32):='42067A1A927255777EB3C7E6317C255B6C7372A1AFB2379A8ECBE6B9B09 4AC4A';42067A1A927255777EB3C7E6317C255B6C7372A1AFB2379A8ECBE6B9B094AC4A就是我们的密钥.所以,如果只是简单地把以上程序在oracle上运行一下就使用,那么任何有权限登陆的人看到这个程序,就可以知道密钥. 所以简单的做法是利用Oracle提供的WRAP把整个程序加密,用加密后的文本创建程序. 这样别人就看不到你的源代码了.把程序保存为source.sql,在Dos命令下输入:-Wrap iname=source.sql oname=target.sql就可以了,然后SQL Plus运行target.sql.当然了, 这里讲的密钥保存还是很简单的. 并不是百分百保险. 大家可以自己想想如何更安全地保持你的密钥.。

oracle解锁数据的方法

oracle解锁数据的方法

oracle解锁数据的方法
在Oracle数据库中,解锁数据的方法取决于锁定的类型和锁定的来源。

下面是一些常见的解锁数据的方法:
1. 手动提交或回滚事务:如果数据被锁定是因为当前事务没有完成,则可以手动提交或回滚事务,以释放锁定的数据。

可以使用以下命令提交事务:
```
COMMIT;
```
或者使用以下命令回滚事务:
```
ROLLBACK;
```
2. 等待其他事务完成:如果数据被其他事务锁定,则可以等待其他事务完成并释放锁定的数据。

3. 杀死会话进程:如果无法等待其他事务完成或无法识别锁定的来源,可以使用以下命令杀死锁定会话进程:
```
ALTER SYSTEM KILL SESSION 'sid, serial#';
```
其中'sid'和'serial#'是锁定会话的标识符,在V$SESSION视图中可以找到。

4. 重启数据库实例:如果数据长时间被锁定或无法解锁,可以考虑重启整个数据库实例来释放锁定的数据。

但是,这种解锁方法应该在其他方法失败后才使用,并且需要小心处理,避免数据丢失或影响其他正在进行的操作。

需要注意的是,解锁数据可能会引起数据一致性问题,必须谨慎使用。

在进行任何解锁操作之前,建议先备份数据以防止意外情况发生。

oracle锁表查询和解锁方法

oracle锁表查询和解锁方法

oracle锁表查询和解锁方法一、锁表查询1.使用“行锁”的“for update”子句“for update”子句可以显式地锁定表中的行,以防止其他用户在数据没有更新之前更改或删除它们。

您可以在SELECT语句后使用“for update”子句来锁定表中的特定行:SELECT empno, enameFROM employeesWHERE deptno = 10FORUPDATE;如果您希望锁定整个表,请加上“OF”关键字:SELECT empno, enameFROM employeesWHERE deptno = 10FOR UPDATE OF empno;当在“of”后面指定列名时,它表示你想要锁定此列中的所有行。

这意味着其他会话只能读取此表,但不能修改任何满足WHERE子句的行。

要确保SQL语句完全执行,您必须提交事务。

2.使用“表锁”的“lock table”您可以使用“lock table”语句来锁定表。

lock table用于管理和表中的数据不受任何其他用户影响的场合。

它有三种锁定模式:共享(shared)、排他(exclusive)和混合(mixed)。

lock table table_name in exclusive mode;通常,你将锁定表以防止其他用户以任何方式更改。

共享模式锁定表并允许其他用户从表中选择数据,而排他模式锁定除了选择以外的所有指令。

为了防止其他会话使用SELECT语句,可以使用混合模式。

混合模式允许其他进程只进行SELECT操作。

要确保锁定表,您可以提交事务或回滚事务:请注意,如果您锁定任何表,您必须确保提交或回滚事务,否则其他会话将无法进行任何操作。

二、解锁表。

oracle数据库加解密方法

oracle数据库加解密方法

oracle数据库加解密方法在Oracle数据库中,可以使用dbms_crypto包进行加解密。

该包提供了多种加密算法和函数,包括DES、3DES(2-key和3-key)、AES、MD5、MD4、SHA-1和SHA-2哈希算法以及MAC(消息认证码)。

以下是在Oracle数据库中使用dbms_crypto包进行加解密的一般步骤:1. 连接到Oracle数据库,并使用sysdba权限登录。

2. 授予普通用户执行dbms_crypto包的权限。

可以使用以下命令:```sqlGRANT EXECUTE ON _CRYPTO TO USER;```3. 创建加密函数。

可以使用以下语法创建一个加密函数:```sqlCREATE OR REPLACE FUNCTION ENCRYPT_FUNCTION(V_STR VARCHAR2, V_KEY VARCHAR2) RETURN RAW ISL_ENC RAW;BEGINL_ENC := DBMS_(V_STR, DBMS__AES256 + DBMS__CBC, V_KEY);RETURN L_ENC;END;```上述函数使用了AES-256算法进行加密,并使用CBC模式和提供的密钥进行加密。

您可以根据需要选择不同的加密算法和参数。

4. 在普通用户中创建同义词。

使用以下命令为加密函数创建一个同义词:```sqlCREATE SYNONYM ENCRYPT_FUNCTION FOR _FUNCTION;```5. 现在普通用户可以使用加密函数来加密和解密数据。

例如,以下是一个示例查询,演示如何使用加密函数对字符串进行加密:```sqlSELECT ENCRYPT_FUNCTION('Hello World', 'MySecretKey') FROM DUAL;```上述查询将返回加密后的字符串。

您可以使用相同的函数和密钥来解密数据。

dbms_crypto 方法

dbms_crypto 方法

`DBMS_CRYPTO` 是一个Oracle 数据库中的包(Package),用于提供加密和解密功能。

它包含了一组加密和解密函数,可以用于对数据进行加密、解密、摘要计算等操作。

以下是一些`DBMS_CRYPTO` 中常用的方法:1. `ENCRYPT`: 对数据进行加密。

* 参数:`input_data` - 要加密的数据;`key_name` - 使用的密钥名称;`cipher_type` - 加密算法类型;`iv` - 初始化向量(可选)。

* 返回值:加密后的数据。

2. `DECRYPT`: 对数据进行解密。

* 参数:`input_data` - 要解密的数据;`key_name` - 使用的密钥名称;`cipher_type` - 解密算法类型;`iv` - 初始化向量(可选)。

* 返回值:解密后的数据。

3. `DIGEST`: 对数据进行摘要计算。

* 参数:`input_data` - 要计算摘要的数据;`digest_type` - 摘要算法类型;`key_name` - 使用的密钥名称;`iv` - 初始化向量(可选)。

* 返回值:计算得到的摘要值。

4. `GENERATE_KEY`: 生成密钥。

* 参数:`key_name` - 使用的密钥名称;`key_length` - 密钥长度;`cipher_type` - 加密算法类型;`random_seed` - 随机种子(可选)。

* 返回值:生成的密钥。

5. `ENCRYPT_BY_KEY`: 使用指定的密钥对数据进行加密。

* 参数:`input_data` - 要加密的数据;`key_name` - 使用的密钥名称;`cipher_type` - 加密算法类型;`iv` - 初始化向量(可选)。

* 返回值:加密后的数据。

6. `DECRYPT_BY_KEY`: 使用指定的密钥对数据进行解密。

* 参数:`input_data` - 要解密的数据;`key_name` - 使用的密钥名称;`cipher_type` - 解密算法类型;`iv` - 初始化向量(可选)。

数据库数据加密与解密保护敏感数据的加密与解密方法

数据库数据加密与解密保护敏感数据的加密与解密方法

数据库数据加密与解密保护敏感数据的加密与解密方法在现代信息时代,随着互联网的迅猛发展,各类数据库中积累了海量的数据。

然而,这些数据中往往包含了许多敏感信息,比如个人隐私、财务数据等。

为了保护这些敏感数据的安全,数据库加密与解密成为了一项关键技术。

本文将介绍数据库中敏感数据的加密与解密方法,以确保数据的保密性和完整性。

一、对称加密算法对称加密算法是一种常见的加密方法,它使用同样的密钥进行加密和解密。

在数据库中,常见的对称加密算法有DES(Data Encryption Standard)和AES(Advanced Encryption Standard)等。

这些算法通过对数据进行位操作和置换,使得数据变得无法理解。

加密和解密时,需要使用相同的密钥进行操作。

对称加密算法的优点是加密解密速度快,但密钥的安全管理是一个挑战。

二、非对称加密算法非对称加密算法是一种采用不同的密钥进行加密和解密的方法。

在数据库中,常见的非对称加密算法有RSA(Rivest-Shamir-Adleman)和椭圆曲线加密算法(ECC)等。

非对称加密算法既能保证数据加密的安全性,又能方便地进行密钥管理。

在使用非对称加密算法时,数据的发送方使用接收方的公钥进行加密,而接收方则使用自己的私钥进行解密。

三、哈希算法哈希算法是将任意长度的数据映射为固定长度的数据的一种算法。

在数据库中,常见的哈希算法有MD5(Message Digest Algorithm 5)和SHA(Secure Hash Algorithm)等。

哈希算法通常被用于验证数据的完整性,以防止数据被篡改。

在使用哈希算法时,数据经过哈希运算后产生的散列值是唯一的,且同样的数据输入会得到同样的散列值。

这样可以通过比对散列值来确定数据是否被篡改。

四、加密与解密实践实际应用中,数据库数据的加密与解密可以通过数据库管理系统(DBMS)的加密功能来实现。

常见的DBMS,如MySQL、Oracle、SQL Server等都提供了数据加密和解密的功能。

ORACLE加密

ORACLE加密

加密算法概述在介绍oracle中的加密算法之前,大家首先要对加密算法有一个大致的了解,懂得为什么加密,如何加密,加密算法的分类。

一,为什么加密我们的系统中会存在一些极其敏感的数据,这些数据涉及到公司的机密。

自然这些是不想让其他公司或竞争对手看到的,所以就需要一种方法来对数据进行“包装”。

包装后的数据就象是增加了一层坚固的外壳,其他人很难看到壳内的敏感数据。

这种“包装”就是加密。

可见加密对于敏感数据的重要意义。

二,如何加密所谓“加密”,就是对原内容为明文的文件或数据按某种算法进行处理,使其成为不可读的代码,经过这样处理的数据通常称为“密文”,密文只能在经过相对应的反向算法处理后才能恢复原来的内容,通过这样的途径来达到保护数据不被非法人窃取、阅读的目的,而将该编码信息转化为其原来数据的过程,就是“解密”。

最简单的加密就是通过改变明文中的字符位置来实现。

举个简单的例子,比如说welcome这个字符串,我通过交换相邻位置的字符位置来实现最简单的加密。

加密后的字符串变成ewclmoe。

这是简单的加密方式,可以说没有任何的安全性,但是可以说明加密的原理,就是通过一定的处理让明文转变成很难读懂的密文。

现在流行的加密算法是利用一复杂的密钥通过某种加密的算法将明文转化为密文。

既然是进行加密,那么和加密相关的密钥和加密算法自然也是需要保护的。

算法的保密性可以分为基于保持算法的秘密和基于保持密钥的秘密。

如果算法的保密性是基于保持算法的秘密,这种算法称为受限制的算法。

受限制的算法具有历史意义,但按现在的标准,它们的保密性已远远不够。

大的或经常变换的用户组织不能使用它们,因为每有一个用户离开这个组织,其它的用户就必须改换另外不同的算法。

如果有人无意暴露了这个秘密,所有人都必须改变他们的算法。

更糟的是,受限制的密码算法不可能进行质量控制或标准化。

每个用户组织必须有他们自己的唯一算法。

这样的组织不可能采用流行的硬件或软件产品。

数据库数据加密与解密的使用方法

数据库数据加密与解密的使用方法

数据库数据加密与解密的使用方法数据安全是当今互联网时代的重要议题之一,特别是对于数据库中存储的敏感数据,保护安全更加重要。

数据加密与解密是一种常用的保护敏感数据的方法,能够有效保障数据的机密性。

本文将介绍数据库数据加密与解密的使用方法,帮助读者加强对数据安全的保护。

1. 了解数据加密与解密的基本概念数据加密与解密是通过使用特定的算法将敏感数据转化为密文以保护数据机密性的过程。

其中,加密是将明文转化为密文的过程,解密是将密文还原为明文的过程。

加密算法采用不同的加密机制和密钥来确保数据的安全性。

2. 选择适合的加密算法在使用数据库数据加密与解密的过程中,选择适合的加密算法是关键。

目前常用的加密算法包括对称加密算法和非对称加密算法。

对称加密算法需要使用相同的密钥将明文转化为密文,并且使用该密钥也能将密文还原为明文。

对称加密算法加密解密速度快,适合大量数据的加密,但密钥的管理相对较为复杂。

非对称加密算法使用一对密钥,公钥用于加密,私钥用于解密。

非对称加密算法相对安全,但加密解密速度较慢,适合对安全要求较高的数据。

在选择加密算法时,需要充分考虑数据的安全性和性能需求。

3. 数据加密与解密的实现数据库数据加密与解密的实现有多种方法,可以通过数据库自带的加密功能,或者通过编程实现加解密逻辑。

下面将分别介绍这两种方法。

3.1 使用数据库自带的加密功能大部分数据库系统都提供了加密和解密功能,可以帮助用户方便地实现数据加密与解密。

用户只需配置相应的参数,并选择合适的加密算法,就能保证数据库中的数据被加密存储。

例如,在MySQL数据库中,可以使用AES_ENCRYPT和AES_DECRYPT函数来进行加密和解密。

以下是一个示例:``` SQL-- 数据加密UPDATE table_name SET column_name =AES_ENCRYPT(column_name, 'encryption_key');-- 数据解密SELECT AES_DECRYPT(column_name, 'encryption_key') FROM table_name;```相应地,在Oracle数据库中,可以使用DBMS_CRYPTO包来进行加密和解密。

oracle11g aes加密函数

oracle11g aes加密函数

Oracle11g中的AES加密函数1. 简介Oracle Database 11g引入了对高级加密标准(Advanced Encryption Standard,AES)的支持,通过提供内置的AES加密函数,使数据库能够以更安全的方式存储敏感数据。

AES是一种对称加密算法,具有高效性和安全性,因此被广泛应用于各种信息安全领域。

2. AES加密函数在Oracle Database 11g中,提供了三种AES加密函数,分别是AES_ENCRYPT、AES_DECRYPT和AES_DECRYPT_RAW。

这些函数可以用来对数据库中的数据进行加密操作,以保护数据的隐私和安全。

3. AES_ENCRYPT函数AES_ENCRYPT函数用于对数据进行加密操作,其语法如下:AES_ENCRYPT(input_string, encryption_key)其中input_string为待加密的字符串,encryption_key为用于加密的密钥。

该函数将input_string使用encryption_key进行AES加密,并返回加密后的结果。

4. AES_DECRYPT函数AES_DECRYPT函数用于对数据进行解密操作,其语法如下:AES_DECRYPT(encrypted_string, encryption_key)其中encrypted_string为待解密的字符串,encryption_key为用于解密的密钥。

该函数将encrypted_string使用encryption_key进行AES解密,并返回解密后的原始数据。

5. AES_DECRYPT_RAW函数AES_DECRYPT_RAW函数与AES_DECRYPT函数类似,用于对数据进行解密操作,但不同之处在于其返回的是原始的二进制数据,而不是字符串。

其语法如下:AES_DECRYPT_RAW(encrypted_string, encryption_key)该函数的使用场景通常是在需要对加密的二进制数据进行解密时。

oracle锁表查询和解锁方法

oracle锁表查询和解锁方法

oracle锁表查询和解锁方法Oracle数据库提供了多种锁表查询和解锁方法,主要包括以下几种:1.查询锁表的方法:-查询数据库中的锁表信息:可以使用`V$LOCKED_OBJECT`视图来查询数据库中当前被锁定的对象和会话信息。

-查看表的锁信息:可以使用`DBA_LOCK`视图来查看指定表被锁定的信息,包括锁定的用户、锁定的模式、锁定的操作等。

-查看表上的锁信息:可以使用`DBA_OBJECTS`视图来查询指定表上的锁信息,包括锁定的用户、锁定的模式、锁定的操作等。

2.解锁表的方法:- 杀死会话:使用`ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE;`语句可以立即终止指定会话。

其中,`sid`和`serial#`是要终止会话的标识符。

- 释放表锁:使用`ALTER TABLE table_name ENABLE TABLE LOCK`语句可以释放指定表的锁。

其中,`table_name`是要释放锁的表名。

- 修改会话状态:使用`UPDATE V$SESSION SET STATUS = 'KILLED' WHERE SID = sid AND SERIAL# = serial#;`语句可以将指定会话的状态修改为`KILLED`,从而间接释放表锁。

其中,`sid`和`serial#`是要释放锁的会话的标识符。

3.避免锁表的方法:-尽量使用短事务:短事务可以减少对资源的占用时间,从而降低锁表的风险。

-尽量使用较小的粒度锁:使用较小的粒度锁可以减少锁表的范围,提高并发性能。

-合理调整事务隔离级别:使用合适的事务隔离级别可以在保证数据一致性的前提下减少锁表的发生。

-分表、分区表:将大表进行分表或分区,可以减少锁表的范围,提高并发性能。

4.监控锁表情况:- 监控锁表的工具:可以使用Oracle提供的监控工具,如AWR Report、ASH Report、Enterprise Manager等,来实时监控锁表情况。

Oracle的AES加密与解密用法

Oracle的AES加密与解密用法

Oracle的AES加密与解密⽤法Oracle的AES加密与解密⽤法2013年12⽉11⽇ 11:50:35 iteye_751 阅读数:428--加密字符串create or replace function des3_enc(input varchar2)return varchar2isi_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 thenreturn null;else if input='' thenreturn '';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));--字符转成RAWraw_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 varchar2isi_data varchar2(2048);i_key varchar2(2048);v_in varchar2(2048);begin--判断是否为空if input is null thenreturn null;else if input='' thenreturn '';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;--触发器,⽤于在增加、修改时⾃动加密字段,查询时需要⼿动调⽤解密函数进⾏解密。

ORACLE字段AES算法加密、解密函数索引

ORACLE字段AES算法加密、解密函数索引

ORACLE字段AES算法加密、解密函数索引--我这⾥使⽤的是utl_i18n.string_to_raw进⾏数据类型的转换,这是因为encrypt函数不但需要raw型数据,⽽且还需要使⽤专门的字符集—AL32UTF8,这⾥如果使⽤utl_raw.cast_to_raw,则会出现“ORA-06512”错误。

--只需要对解密函数写deterministic确定性函数grant execute on SYS.DBMS_CRYPTO to enc;create or replace function enc.encrypt(v_string in varchar2) return varchar2 isencrypted_raw RAW (2000);encryption_type PLS_INTEGER := SYS.DBMS_CRYPTO.ENCRYPT_DES + SYS.DBMS_CRYPTO.CHAIN_CBC + SYS.DBMS_CRYPTO.PAD_PKCS5;v_key raw(128) := utl_i18n.string_to_raw( 'artos0011', 'AL32UTF8' );beginencrypted_raw := DBMS_CRYPTO.ENCRYPT(src => UTL_I18N.STRING_TO_RAW (v_string,'AL32UTF8'),typ => encryption_type,key => v_key);return RAWTOHEX(encrypted_raw);end encrypt;/create or replace function enc.decrypt(v_str in varchar2) return varchar2 isdecrypted_raw raw(2000);encryption_type PLS_INTEGER := SYS.DBMS_CRYPTO.ENCRYPT_DES + SYS.DBMS_CRYPTO.CHAIN_CBC + SYS.DBMS_CRYPTO.PAD_PKCS5;v_key raw(128) := utl_i18n.string_to_raw( 'artos001', 'AL32UTF8' );begindecrypted_raw := DBMS_CRYPTO.Decrypt(src => HEXTORAW(v_str),typ => encryption_type,key => v_key);return UTL_I18N.RAW_TO_CHAR (decrypted_raw, 'AL32UTF8');end decrypt;/select enc.encrypt('67634572') from dual;select enc.decrypt(enc.encrypt('67634572')) from dual;--------------------------------------------------------------------------------------------------------------------------------------函数索引,对⾃定义解密函数CREATE TABLE ENC.A34(ID NUMBER PRIMARY KEY,NAME VARCHAR2(200),ADDR VARCHAR2(200));BEGINFOR I IN 1..10000 LOOPINSERT INTO ENC.A34 SELECT I,'N'||I,'A'||I FROM DUAL;END LOOP;COMMIT;END;/ALTER TABLE ENC.A34 ADD NAME_ VARCHAR2(4000);CREATE VIEW ENC.V_A34 AS SELECT ID,ENC.DECRYPT(NAME_) AS NAME,ADDR FROM ENC.A34;UPDATE ENC.A34 T SET _=ENC.ENCRYPT(NAME);COMMIT;CREATE INDEX ENC.IDX_NAME_ ON ENC.A34(ENC.DECRYPT(NAME_));--收集表统计信息call dbms_stats.gather_table_stats(ownname => 'ENC',tabname => '"A34"',estimate_percent => 10,method_opt=> 'for all indexed columns');call dbms_stats.gather_table_stats(ownname => 'ENC',tabname => '"A34"',CASCADE=>TRUE);SELECT T.*,ENC.DECRYPT(_) FROM ENC.A34 T WHERE T.ID='4';SELECT /*+index(t IDX_NAME_)*/* FROM ENC.A34 T WHERE ENC.DECRYPT(NAME_)>='N4';SELECT /*+index(t IDX_NAME_)*/* FROM ENC.A34 T WHERE ENC.DECRYPT(NAME_) = 'N44';SELECT * FROM ENC.V_A34 T WHERE ='N44';UPDATE ENC.A34 T SET _=ENC.ENCRYPT(||'4') WHERE T.ID=4;--查看执⾏计划EXPLAIN PLAN FOR SELECT * FROM ENC.A34 T WHERE ='N2';SELECT * FROM table(DBMS_XPLAN.DISPLAY);--SYS.DBMS_CRYPTO.ENCRYPT_DES为包变量,不能在sql中调⽤SELECT SYS.DBMS_CRYPTO.ENCRYPT_DES + SYS.DBMS_CRYPTO.CHAIN_CBC + SYS.DBMS_CRYPTO.PAD_PKCS5 FROM DUAL;------------------------------------------------------------------------------------------------------------------------------------ORACLE 字段AES算法加密、解密(解决中⽂乱码问题)1.加解密函数⼊⼝CREATE OR REPLACE FUNCTION F_ZNMH_SMK_CRYPT(P_SRC IN VARCHAR2,P_TYPE IN NUMBER)RETURN VARCHAR2 ISRESULT VARCHAR2(4000);BEGIN/*************************************************信息加密函数 F_ZNMH_SMK_CRYPT ⼊参:P_SRC 输⼊明⽂字符串P_TYPE 处理类型,1,为加密;2,为解密;返回值:RESULT 返回密⽂字符串,约定返回为 16进制密⽂字符串 异常处理:此函数不对任何异常做捕捉处理,请相应的程序模块对异常做捕捉处理。

Oracle加密解密

Oracle加密解密

Oracle加密解密Oracle内部有专门的加密包,可以很⽅便的对内部数据进⾏加密(encrypt)和解密(decrypt). 介绍加密包之前,先简单说⼀下Oracle基本数据类型——RAW类型。

RAW,⽤于保存位串的数据类型,类似于CHAR,声明⽅式RAW(L),L为长度,以字节为单位,作为数据库列最⼤2000,作为变量最⼤32767字节。

 操作RAW类型的函数: utl_raw.cast_to_raw([varchar2]):将varchar2转换为raw类型 utl_raw.cast_to_varchar2([raw]):将raw转换为varchar2类型 hextoraw():⼗六进制字符串转换为raw rawtohex():将raw串转换为⼗六进制 注:RAW保存的为16进制数,当使⽤HEXTORAW时,会把字符串中数据当作16进制数。

⽽使⽤UTL_RAW.CAST_TO_RAW时,直接把字符串中每个字符的ASCII码存放到RAW类型的字段中。

eg>select hextoraw('abc') from dual; --输出结果为: ABC eg>select utl_raw.cast_to_raw('abc') from dual; --输出结果为: 616263(a的ASCII码值为97,转换成16进制数为61)下⾯介绍⼀下Oracle中的加密包:1,Dbms_Obfuscation_Toolkit(9i) 利⽤Dbms_Obfuscation_Toolkit包,我们可以对数据进⾏DES,Triple DES或者MD5加密 DESGETKEY -- 产⽣密钥,⽤于DES算法 DES3GETKEY -- 产⽣密钥,⽤于Triple DES算法 DESENCRYPT -- ⽤DES算法加密数据 DESDECRYPT -- ⽤DES算法解密数据 DES3ENCRYPT -- ⽤Triple DES算法加密数据 DES3DECRYPT -- ⽤DES算法解密数据 MD5 -- ⽤MD5算法加密数据 加密包中分别采⽤raw和string两种数据类型加密,分别测试⼀下:(注:加密的字符串(input_string)必须是8的倍数)DES算法加密解密DECLAREv_input VARCHAR2(100) := '12345678';v_key VARCHAR2(100) := 'oracle9i';-- ORA-28232: obfuscation ⼯具箱的输⼊长度⽆效(原因是加密字符串必须是8的倍数)encrypted_str VARCHAR2(4000);decrypted_str VARCHAR2(4000);encrypted_raw RAW(4000);decrypted_raw RAW(4000);BEGIN-- string类型加密解密-- encrypt(string)dbms_obfuscation_toolkit.desencrypt(input_string => v_input, key_string => v_key, encrypted_string => encrypted_str);dbms_output.put_line('Encrypted string: ' || encrypted_str);dbms_output.put_line('Encrypted hex value: ' || utl_raw.cast_to_raw(encrypted_str));-- decrypt(string)dbms_obfuscation_toolkit.desdecrypt(input_string => encrypted_str, key_string => v_key, decrypted_string => decrypted_str);dbms_output.put_line('Decrypted String: ' || decrypted_str);-- raw类型加密解密-- encrypt(raw)dbms_obfuscation_toolkit.desencrypt(input => utl_raw.cast_to_raw(v_input), key => utl_raw.cast_to_raw(v_key), encrypted_data => encrypted_raw);dbms_output.put_line('Encrypted Raw: ' || encrypted_raw);dbms_output.put_line('Encrypted hex value: ' || rawtohex(encrypted_raw));-- decrypt(raw)dbms_obfuscation_toolkit.desdecrypt(input => encrypted_raw, key => utl_raw.cast_to_raw(v_key), decrypted_data => decrypted_raw);dbms_output.put_line('Decrypted String: ' || utl_raw.cast_to_varchar2(decrypted_raw));END;注:DES算法加密的key长度必须⼤于等于8,⽽且加密的结果只跟其前8位有关(推测可能是截取了字符串);Triple DES算法加密(DES3ENCRYPT)⽤法同DES基本类似,安全性叫DES算法更⾼;同理,Triple DES算法的key长度必须⼤于等于16,且结果只与其前16位有关;(Extra:数据类型PLS_INTEGER可以存储⼀个有符号的整型值,其精度范围和BINARY_INTEGER⼀样,是-2^31~2^31)MD5算法加密DECLAREv_str VARCHAR2(100) := '123456';v_key VARCHAR2(100) := 'oracle9i';encrypted_str VARCHAR2(32);encrypted_raw RAW(32);BEGIN-- encrypted as stringdbms_obfuscation_toolkit.MD5(input_string => v_str || v_key, checksum_string => encrypted_str);dbms_output.put_line('Encrypted String: ' || encrypted_str);dbms_output.put_line('Encrypted hex value: ' || utl_raw.cast_to_raw(encrypted_str));-- encrypted as rawdbms_obfuscation_toolkit.MD5(input => utl_raw.cast_to_raw(v_str || v_key), checksum => encrypted_raw);dbms_output.put_line('Encrypted Raw: ' || encrypted_raw);dbms_output.put_line('Encrypted hex value: ' || rawtohex(encrypted_raw));END;注:MD5算法只能正向加密,但它多次对于同⼀数据的加密计算结果是相同的。

oracle数据库用户解锁语句

oracle数据库用户解锁语句

oracle数据库用户解锁语句Oracle数据库用户解锁是指将被锁定的用户账号恢复为可正常使用的状态。

用户账号被锁定可以是由于输入错误的密码次数超过了系统限制,或者是由于管理员手动锁定了该用户账号。

下面列举了10个解锁Oracle数据库用户的语句。

1. ALTER USER语句ALTER USER语句是最常用的解锁用户账号的方法之一。

可以使用以下语法将用户账号解锁:```ALTER USER <username> ACCOUNT UNLOCK;```其中,`<username>`是要解锁的用户账号名称。

执行这条语句后,用户账号将被解锁并可以正常使用。

2. UNLOCK USER语句UNLOCK USER语句也可以用来解锁用户账号,语法如下:```UNLOCK USER <username>;```同样,`<username>`是要解锁的用户账号名称。

执行这条语句后,用户账号将被解锁。

3. 使用ADMIN命令解锁用户账号在Oracle数据库中,可以使用ADMIN命令解锁用户账号。

具体步骤如下:a. 使用sysdba权限登录到数据库:```sqlplus / as sysdba```b. 执行ADMIN命令解锁用户账号:```ADMIN UNLOCK USER <username>;```4. 使用ALTER SYSTEM命令解锁用户账号另一种解锁用户账号的方法是使用ALTER SYSTEM命令。

具体步骤如下:a. 使用sysdba权限登录到数据库:```sqlplus / as sysdba```b. 执行ALTER SYSTEM命令解锁用户账号:```ALTER SYSTEM UNLOCK USER '<username>';```5. 使用DBMS_LOCK.SLEEP函数解锁用户账号DBMS_LOCK.SLEEP函数可以用来解锁用户账号,具体步骤如下:a. 使用sysdba权限登录到数据库:```sqlplus / as sysdba```b. 执行DBMS_LOCK.SLEEP函数解锁用户账号:```BEGINDBMS_LOCK.SLEEP(1);EXECUTE IMMEDIATE 'ALTER USER <username> ACCOUNTUNLOCK';END;/```6. 使用DBMS_SYS_SQL解锁用户账号DBMS_SYS_SQL包中的EXECUTE_AND_FETCH函数可以用来执行动态SQL语句,从而解锁用户账号。

oraclemd5解密函数

oraclemd5解密函数

oraclemd5解密函数
Oracle是一种常用的关系型数据库管理系统,其中包含了许多常用的加密和解密函数。

其中,MD5解密函数是一种常用的密码解密函数,经常用于解密存储在数据库中的MD5加密密码。

Oracle中的MD5解密函数通常包含两个参数,第一个参数是要解密的字符串,第二个参数是密码解密的密钥。

使用MD5解密函数时,需要提供正确的密钥才能成功解密。

使用Oracle的MD5解密函数时,需要注意以下几点:
1. 确保提供正确的解密密钥。

如果密钥不正确,解密可能会失败。

2. 确保要解密的字符串是经过MD5加密的。

如果字符串没有经过MD5加密,解密也会失败。

3. 针对大量加密数据的解密,可能需要使用批量处理方法,以提高解密效率。

总之,Oracle的MD5解密函数是一种方便、快捷的解密方法,可以帮助用户快速解密MD5加密的密码和数据。

- 1 -。

oracle 密码加密原理

oracle 密码加密原理

oracle 密码加密原理
Oracle数据库的密码加密原理基于对称密钥和非对称密钥的混合加密体系。

在Oracle中,密码加密主要涉及到密码散列函数和Oracle提供的加密函数。

首先,当用户在登录数据库时输入密码后,Oracle会使用密码散列函数对密码进行散列处理,生成一个散列值。

散列值是一个固定长度的字符串,由输入的密码通过散列算法计算得出。

由于散列算法是单向的,即无法从散列值还原出原始密码,因此散列值可以作为验证用户身份的凭证。

接下来,Oracle会使用存储在数据库中的加密密钥对散列值进行加密,生成一个加密的散列值。

这个加密密钥是一个对称密钥,它用于保护存储在数据库中的敏感数据,包括用户的密码散列值。

Oracle使用了一系列的加密算法和加密模式来确保密码加密的安全性。

在验证用户身份的过程中,Oracle会将用户输入的密码再次进行散列处理,生成一个新的散列值。

然后,Oracle将这个新的散列值与数据库中存储的加密散列值进行比较,以验证用户的身份。

如果两个散列值匹配,则用户身份验证通过。

总之,Oracle数据库的密码加密原理是基于散列函数和对称密钥加密算法的混合加密体系。

通过散列函数和加密密钥的结合使用,Oracle能够保护用户的密码安全,并确保只有合法的用户能够访问数据库。

Oracle加密和解密函数

Oracle加密和解密函数
2. 解密函数
CREATE OR REPLACE function ds_func_decrypt_des(p_text varchar2, p_key varchar2) return varchar2 is p_text_raw RAW(20000); p_key_raw RAW(20000); v_text_raw RAW(20000); v_text varchar2(4000); v_ErrorText varchar2(500); begin if(p_text is null or p_text = '' ) then return ''; end if; p_text_raw := HEXTORAW(p_text); p_key_raw := UTL_I18N.STRING_TO_RAW(p_key, 'ZHS16GBK'); dbms_obfuscation_toolkit.DESDECRYPT(input => p_text_raw, key =>p_key_raw, decrypted_data=> v_text_raw); v_text := UTL_I18N.RAW_TO_CHAR(v_text_raw, 'ZHS16GBK'); dbms_output.put_line(v_text); return rtrim(v_text,chr(0)); exception when others then v_ErrorText := 'dserror:'||SUBSTR(SQLERRM, 1, 200); return v_ErrorText; end;
时一般要求都是要进行加密保存的下面是一组oracle加密和解密函数
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档