ORACLE 21C 如何以group25为密钥将ORDERS表中TotalCost NUMBER(35,2) 列的数据加密
时间: 2023-12-03 19:47:06 浏览: 114
在Oracle 21c中,可以使用DBMS_CRYPTO包来进行加密操作。以下是以group25为密钥对ORDERS表中TotalCost列进行加密的步骤:
1. 首先需要创建一个加密密钥。可以使用以下命令:
```
DECLARE
l_key RAW(32) := UTL_RAW.cast_to_raw('group25');
BEGIN
DBMS_CRYPTO.CREATE_DES3KEY(
key => l_key,
which => DBMS_CRYPTO.ENCRYPT_AES
);
END;
/
```
2. 然后需要更新ORDERS表中TotalCost列的值。可以使用以下命令:
```
UPDATE ORDERS SET TotalCost = DBMS_CRYPTO.ENCRYPT(
src => UTL_RAW.cast_to_raw(TotalCost),
typ => DBMS_CRYPTO.DES3_CBC_PKCS5,
key => l_key
);
```
这将使用DES3算法和CBC模式对TotalCost列中的数据进行加密,并使用PKCS5填充方式进行填充。加密后的值将替换原始值。
请注意,加密后的值将以RAW格式存储在数据库中。如果需要将其转换为可读的格式,请使用UTL_RAW.cast_to_varchar2函数。
相关问题
ORACLE 21C 如何以group25为密钥将ORDERS表中数据类型为NUMBER(35,2)的TotalCost 列的数据加密
Oracle 21c 通过 Transparent Data Encryption (TDE) 功能支持对数据库中的敏感数据进行加密保护。在使用 TDE 功能前,需要先配置 Oracle Wallet 以存储加密密钥。
以下是通过 TDE 加密 ORDERS 表的 TotalCost 列的步骤:
1. 创建一个 Oracle Wallet,并配置一个名为 group25 的加密密钥:
```
ADMINISTER KEY MANAGEMENT CREATE KEYSTORE '/path/to/wallet' IDENTIFIED BY 'wallet_password';
ADMINISTER KEY MANAGEMENT SET KEYSTORE OPEN IDENTIFIED BY 'wallet_password';
ADMINISTER KEY MANAGEMENT CREATE KEY 'group25' IDENTIFIED BY 'group25_password';
```
2. 将 ORDERS 表中 TotalCost 列的数据类型更改为加密类型:
```
ALTER TABLE ORDERS MODIFY (TotalCost ENCRYPT USING 'AES256' KEYID 'group25');
```
3. 确认加密已经生效:
```
SELECT column_name, encryption_alg, encrypted FROM user_enc_columns WHERE table_name='ORDERS';
```
这将显示 ORDERS 表中所有已加密列的加密算法和加密状态。如果 TotalCost 列被加密,则应该会显示为 “YES”。
现在,ORDERS 表中的 TotalCost 列中的数据已经被加密,只有拥有访问加密密钥的用户才能查看其明文值。
ORACLE 21C如何对表中的NUMBER数据类型的列进行加密
Oracle 21c提供了Transparent Data Encryption (TDE)功能来对数据库中的数据进行加密,包括NUMBER数据类型的列。以下是对表中的NUMBER数据类型的列进行加密的步骤:
1. 在Oracle 21c中启用TDE功能。可以使用以下命令:
```
SQL> ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY "encryption_password";
```
2. 创建一个加密密钥。可以使用以下命令:
```
SQL> CREATE KEYSTORE keystore IDENTIFIED BY "keystore_password" WITH ENCRYPTION;
```
3. 在表中创建一个NUMBER数据类型的列,例如:
```
SQL> CREATE TABLE myTable (id NUMBER, sensitive_data NUMBER);
```
4. 使用ALTER TABLE语句来加密sensitive_data列。可以使用以下命令:
```
SQL> ALTER TABLE myTable MODIFY sensitive_data ENCRYPT;
```
5. 确认sensitive_data列已经被加密。可以使用以下命令:
```
SQL> SELECT column_name, encryption_alg FROM user_enc_columns WHERE table_name = 'myTable';
```
这将显示myTable表中列的加密状态。
现在,当你向myTable表中插入敏感信息时,sensitive_data列将自动加密。同样,当你从myTable表中检索数据时,sensitive_data列也将自动解密。
阅读全文
相关推荐














