CREATE TABLE ORDERS ( ORDERSID NUMBER(10) PRIMARY KEY, ORDERSDate DATE, ORDERStatus VARCHAR2(20), TotalCost NUMBER(10,2), CustomerID NUMBER(10), FOREIGN KEY (CustomerID) REFERENCES CUSTOMER(CustomerID) ); 以618272作为密钥加密TotalCost
时间: 2023-12-03 07:45:58 浏览: 31
在 Oracle 数据库中,可以使用 DBMS_CRYPTO 包来进行加密和解密操作。以下是使用该包以618272作为密钥加密 ORDERS 表中的 TotalCost 列的 SQL 语句:
```
-- 创建密钥
DECLARE
key_raw VARCHAR2(64) := '618272';
key_val RAW(64);
BEGIN
key_val := UTL_RAW.CAST_TO_RAW(key_raw);
DBMS_CRYPTO.DES3KEYVERIFY(key_val);
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Invalid key: ' || key_raw);
END;
/
-- 加密 TotalCost 列
UPDATE ORDERS
SET TotalCost = DBMS_CRYPTO.ENCRYPT(TotalCost, DBMS_CRYPTO.DES3_CBC_PKCS5, key_val);
-- 解密 TotalCost 列
SELECT ORDERSID, TotalCost, DBMS_CRYPTO.DECRYPT(TotalCost, DBMS_CRYPTO.DES3_CBC_PKCS5, key_val)
FROM ORDERS;
```
需要注意的是,加密后的 TotalCost 将会是一个 RAW 类型的值,需要使用 DBMS_CRYPTO.DECRYPT 函数进行解密才能得到原始值。
相关问题
CREATE TABLE ORDERS ( ORDERSID NUMBER(10) PRIMARY KEY, ORDERSDate DATE, ORDERStatus VARCHAR2(20), TotalCost NUMBER(10,2), CustomerID NUMBER(10), FOREIGN KEY (CustomerID) REFERENCES CUSTOMER(CustomerID) ); 以group25作为密钥加密TotalCost
你可以使用以下语句来加密TotalCost:
```
CREATE TABLE ORDERS_ENCRYPTED (
ORDERSID NUMBER(10) PRIMARY KEY,
ORDERSDate DATE,
ORDERStatus VARCHAR2(20),
TotalCost_RAW NUMBER(10,2),
TotalCost_ENCRYPTED RAW(200),
CustomerID NUMBER(10),
FOREIGN KEY (CustomerID) REFERENCES CUSTOMER(CustomerID)
);
INSERT INTO ORDERS_ENCRYPTED (
ORDERSID,
ORDERSDate,
ORDERStatus,
TotalCost_RAW,
TotalCost_ENCRYPTED,
CustomerID
)
SELECT ORDERSID,
ORDERSDate,
ORDERStatus,
TotalCost,
dbms_crypto.encrypt(
UTL_RAW.cast_to_raw(TotalCost),
dbms_crypto.hmac(Utl_raw.cast_to_raw('group25'), Utl_raw.cast_to_raw(TotalCost))
),
CustomerID
FROM ORDERS;
```
该语句将创建一个新的名为ORDERS_ENCRYPTED的表,其中包含原始的TotalCost(TotalCost_RAW)和加密的TotalCost(TotalCost_ENCRYPTED)。加密使用的密钥是group25。
CREATE TABLE `cate` ( `cateid` varchar(255) NOT NULL, `catename` varchar(255) DEFAULT NULL, `memo` varchar(255) DEFAULT NULL, `addtime` varchar(255) DEFAULT NULL, PRIMARY KEY (`cateid`) ) ; CREATE TABLE `details` ( `detailsid` varchar(255) NOT NULL, `ordercode` varchar(255) DEFAULT NULL, `bookid` varchar(255) DEFAULT NULL, `num` varchar(255) DEFAULT NULL, `price` varchar(255) DEFAULT NULL, `receivername` varchar(255) DEFAULT NULL, `receiverphone` varchar(255) DEFAULT NULL, `address` varchar(255) DEFAULT NULL, PRIMARY KEY (`detailsid`) ) ; CREATE TABLE `orders` ( `ordersid` varchar(255) NOT NULL, `ordercode` varchar(255) DEFAULT NULL, `usersid` varchar(255) DEFAULT NULL, `total` varchar(255) DEFAULT NULL, `status` varchar(255) DEFAULT NULL, `addtime` varchar(255) DEFAULT NULL, PRIMARY KEY (`ordersid`) ) ; CREATE TABLE `topic` ( `topicid` varchar(255) NOT NULL, `usersid` varchar(255) DEFAULT NULL, `filmid` varchar(255) DEFAULT NULL, `num` varchar(255) DEFAULT NULL, `contents` varchar(255) DEFAULT NULL, `addtime` varchar(255) DEFAULT NULL, PRIMARY KEY (`topicid`) ) ; CREATE TABLE `users` ( `usersid` varchar(255) NOT NULL, `username` varchar(255) DEFAULT NULL, `password` varchar(255) DEFAULT NULL, `realname` varchar(255) DEFAULT NULL, `sex` varchar(255) DEFAULT NULL, `birthday` varchar(255) DEFAULT NULL, `contact` varchar(255) DEFAULT NULL, `regdate` varchar(255) DEFAULT NULL, PRIMARY KEY (`usersid`) ) ;
这是五个 SQL 语句,用于创建五个数据表。
第一个语句创建名为 "cate" 的数据表,该表有四个字段:"cateid"、"catename"、"memo" 和 "addtime"。"cateid" 字段是主键,其他字段都是可空的。
第二个语句创建名为 "details" 的数据表,该表有九个字段:"detailsid"、"ordercode"、"bookid"、"num"、"price"、"receivername"、"receiverphone"、"address"。"detailsid" 字段是主键,其他字段都是可空的。
第三个语句创建名为 "orders" 的数据表,该表有六个字段:"ordersid"、"ordercode"、"usersid"、"total"、"status"、"addtime"。"ordersid" 字段是主键,其他字段都是可空的。
第四个语句创建名为 "topic" 的数据表,该表有六个字段:"topicid"、"usersid"、"filmid"、"num"、"contents"、"addtime"。"topicid" 字段是主键,其他字段都是可空的。
第五个语句创建名为 "users" 的数据表,该表有九个字段:"usersid"、"username"、"password"、"realname"、"sex"、"birthday"、"contact"、"regdate"。"usersid" 字段是主键,其他字段都是可空的。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)