日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

DB2中的數據值加密

瀏覽:37日期:2023-11-11 15:10:02

多年來,數據庫已經能夠阻止未經授權的人看到其中的數據,這通常是通過數據庫管理器中的特權和權限來實現的。在當前的環境下,對存儲數據的保密的需求日益增長。這意味著即使 DBA 對表中的數據有完全的訪問權限,但是表中可能還有數據擁有者不希望任何其他人看到的某些信息。特別是對于基于 Web 的應用程序,這一問題就更加明顯了,在這種應用程序中,用戶輸入的數據(比如信用卡號)需要保存起來,以備同一用戶以后使用該應用程序。同時,用戶擁有者希望能夠確保任何其他人不能訪問這種數據。為了實現這種功能,DB2 內置了一些 SQL 函數,這些函數允許應用程序加密和解密數據。當將數據插入到數據庫中時,可以使用用戶提供的加密密碼對其加密。當檢索該數據的時候,必須提供相同的密碼才能解密數據。對于要多次使用同一個密碼的情況,可以使用一個賦值語句設置 ENCRYPTION PASSWORD 值,并令其在某次連接期間內有效。 >projectName varchar(48) ); create index idxEmpPrj on empProject ( ssn ); -- Add some data set encryption password = 'ssnPassWord'; insert into emp values (encrypt('480-93-7558'),'Super Programmer'); insert into emp values (encrypt('567-23-2678'),'Novice Programmer'); insert into empProject values (encrypt('480-93-7558'),'UDDI Project'); insert into empProject values (encrypt('567-23-2678'),'UDDI Project'); insert into empProject values (encrypt('480-93-7558'),'DB2 UDB Version 10'); -- Find the programmers working on UDDI select a.name, decrypt_char(a.ssn) from emp a, empProject b where a.ssn = b.ssn and b.project ='UDDI Project'; -- Build a list of the projects that the programmer with ssn -- '480-93-7558' is working on

本文將描述這些 SQL 函數,并給出一些關于如何使用這些加密函數的例子。我們還將討論在關系數據庫中使用加密數據的設計和性能相關事項。

實現

下面顯示了這些新的 SQL 函數的簽名。在 DB2 文檔的 SQL Reference 部分中有更詳細的文檔。(為了確保對加密的數據使用正確的數據類型和長度,請務必閱讀 SQL Reference 中 ENCRYPT 函數下的“Table Column Definition部分。)

Encrypt (StringDataToEncrypt, PasswordOrPhrase, PasswordHint) Decrypt_Char(EncryptedData, PasswordOrPhrase) GetHint(EncryptedData) Set Encryption Password ;

用于對數據加密的算法是一個 RC2 分組密碼(block cipher),它帶有一個 128 位的密鑰。這個 128 位的密鑰是通過消息摘要從密碼得來的。加密密碼與 DB2 認證無關,僅用于數據的加密和解密。

這里可以提供一個可選的參數 PasswordHint,這是一個字符串,可以幫助用戶記憶用于對數據加密的 PasswordOrPhrase。(例如,可以使用 'George' 作為記憶 'Washington'的提示。)

列級加密列級加密(column level encryption)意味著對于一個給定列中的所有值都使用相同的密碼進行加密。這種類型的加密可以在視圖中使用,也可以在使用了一個公共密碼的情況下使用。當對一個或多個表中所有的行使用相同的密鑰時,ENCRYPTION PASSWORD 專用寄存器將十分有用。

例 1:這個例子使用 ENCRYPTION PASSWORD 值來保存加密密碼。它對雇員的社會保險號進行加密,并以經過加密的形式將其存儲在 EMP 表中。

create table emp (ssn varchar(124) for bit data); set encryption password = 'Ben123'; insert into emp (ssn) values(encrypt('289-46-8832')); insert into emp (ssn) values(encrypt('222-46-1904')); insert into emp (ssn) values(encrypt('765-23-3221')); select decrypt_char(ssn) from emp;

例 2:這個例子在結合使用視圖的情況下使用 ENCRYPTION PASSWORD 值來保存加密密碼。下面的語句聲明了 emp 表的一個視圖:

create view clear_ssn (ssn) as select decrypt_char(ssn) from emp;

在應用程序代碼中,我們將 ENCRYPTION PASSWORD 設置為 'Ben123',現在可以使用 clear_ssn 視圖了。

set encryption password = 'Ben123'; select ssn from clear_ssn;

行-列(單元格)或 集合-列級加密

行-列(單元格)或 集合-列(Set-Column)級加密意味著在一個加密數據列內使用多個不同的密碼。例如,Web 站點可能需要保存客戶信用卡號(ccn)。在這個數據庫中,每個客戶可以使用他自己的密碼或短語來加密 ccn。

例 3:Web 應用程序收集關于客戶的用戶信息。這種信息包括客戶名稱(存儲在宿主變量 custname中)、信用卡號(存儲在宿主變量 cardnum中)和密碼(存儲在宿主變量 userpswd中)。應用程序像下面這樣執行客戶信息的插入操作。

insert into customer (ccn, name) values(encrypt(:cardnum, :userpswd), :custname)

當應用程序需要重新顯示某客戶的信用卡信息時,客戶要輸入密碼,同樣該密碼也要存儲在宿主變量 userpswd 中。之后,可以像下面這樣檢索該 ccn :

select decrypt_char(ccn, :userpswd) from customer where name = :custname;

例 4:這個例子使用提示來幫助客戶記憶他們的密碼。這里使用與例 3 相同的應用程序,該應用程序將提示保存到宿主變量 pswdhint中。假設 userpswd 的值是 'Chamonix', pswdhint的值是 'Ski Holiday'。

insert into customer (ccn, name) values(encrypt(:cardnum, :userpswd, :pswdhint), :custname)

如果客戶請求關于所使用的密碼的提示,可以使用下面的查詢。

select gethint(ccn) into :pswdhint from customer where name = :custname;

pswdhint的值被設置為"Ski Holiday"。

加密非字符值數值和日期/時間數據類型的加密通過強制類型轉換得到間接的支持。非字符的 SQL 類型通過強制轉換為 "varchar" 或 "char",就可以被加密了。有關強制類型轉換的更多信息,請參閱 SQL 參考文檔中的 “Casting Between Data Types 部分。

例 5:加密和解密 TIMESTAMP 數據時用到的強制類型轉換函數。

-- Create a table to store our encrypted value create table etemp (c1 varchar(124) for bit data); set encryption password 'next password'; -- Store encrypted timestamp insert into etemp values encrypt(char(CURRENT TIMESTAMP)); -- Select & decrypt timestamp select timestamp(decrypt_char(c1)) from etemp;

例 6:加密/解密 double 數據。

set encryption password 'next password'; insert into etemp values encrypt(char(1.11111002E5)); select double(decrypt_char(c1)) from etemp;

性能加密,就其本質而言,會使大部分 SQL 語句慢下來。但是如果多加注意,多加判斷,還是可以將大量的額外開銷降至最低。而且,加密數據對于數據庫的設計有著很大的影響。通常,您需要對一個模式中的一些敏感數據元素進行加密,例如社會保險號、信用卡號、病人姓名,等等。而有些數據值就不是那么適于加密了 -- 例如布爾值(true 和 false),或者其他的像整數 1 到 10 這樣的小型集合。這些值與列名一起很容易被猜出,因此需要判斷加密是否真的有用。

在某些情況下,對加密的數據創建索引是很好的主意。加密數據的正確匹配及連接將使用您創建的索引。由于加密數據實質上是二進制數據,因此對加密數據進行范圍檢查時需要掃描表。范圍檢查需要解密某一列在所有行的值,因此應該避免進行范圍檢查,至少也應該進行適當的調優。

下面的場景闡明了我們的討論??紤]一種常見的主從(master-detail)模式,程序員可以在很多項目中使用這種模式。我們將對雇員的社會保險號(ssn)實現列級加密。在主表 emp 和從表 empProject 中,ssn 將以加密的形式存儲。

-- Define Tables and Indexes for encrypted data create table emp (ssn varchar(48) for bit data, name varchar(48) ); create unique index idxEmp on emp ( ssn ) includes (name) ; create table empProject( ssn varchar(48) for bit data, projectName varchar(48) ); create index idxEmpPrj on empProject ( ssn ); -- Add some data set encryption password = 'ssnPassWord'; insert into emp values (encrypt('480-93-7558'),'Super Programmer'); insert into emp values (encrypt('567-23-2678'),'Novice Programmer'); insert into empProject values (encrypt('480-93-7558'),'UDDI Project'); insert into empProject values (encrypt('567-23-2678'),'UDDI Project'); insert into empProject values (encrypt('480-93-7558'),'DB2 UDB Version 10'); -- Find the programmers working on UDDI select a.name, decrypt_char(a.ssn) from emp a, empProject b where a.ssn = b.ssn and b.project ='UDDI Project'; -- Build a list of the projects that the programmer with ssn -- '480-93-7558' is working on select projectName from empProject where ssn = encrypt('480-93-7558');

相對于上面的例子,下面的兩個例子是 不應該采用的反面典型。雖然這些查詢同樣能夠返回正確的答案,但是它們會需要為所有行解密 ssn。當表很大的時候,這個問題就會變得突出起來。

select a.name, decrypt_char(a.ssn) from emp a, empProject b where decrypt_char(a.ssn) = decrypt_char(b.ssn) and b.project ='UDDI Project';

該查詢會要求解密 emp 表的每一行以及 empProject 表的每個 'UDDI Project' 行,以執行連接。

select projectName from empProject where decrypt_char(ssn)= '480-93-7558';

該查詢會要求解密 empProject 表中的每一行。

結束語

在本文中,我們演示了 IBM DB2 Universal Database 中的加密函數如何提供簡單方式來加密敏感數據。這些函數可用來實現列級和行-列級的加密。在設計和實現期間,開發人員應該審視一些重要的性能相關事項。數據加密為隱藏私有數據增添了一種新的可用工具,即使對于管理人員,也能起到保密的作用。

標簽: DB2 數據庫
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
免费污视频在线一区| 欧美极品中文字幕| 日韩中文视频| 91精品国产调教在线观看| 欧美三级网址| 999国产精品永久免费视频app| 麻豆国产91在线播放| 国产精品白丝av嫩草影院| 久久av日韩| 国产精品福利在线观看播放| 成人亚洲一区| 成人啊v在线| 999精品一区| 欧美理论视频| 男人的天堂久久精品| 婷婷精品在线| 国产精品探花在线观看| 国产精品亚洲欧美一级在线| 精品视频久久| 99精品在线观看| 亚洲在线电影| 综合激情网站| 国产精品99精品一区二区三区∴| 国产精品伦理久久久久久| 日韩精品免费一区二区在线观看 | 欧美/亚洲一区| 六月婷婷一区| 91成人在线精品视频| 国产福利资源一区| 日本综合字幕| 在线精品一区| 麻豆成人在线观看| 久久久一二三| 综合日韩在线| 国产一卡不卡| 中文字幕在线看片| 不卡一区2区| 日韩欧美久久| 久久亚洲国产精品尤物| 亚洲国产综合在线看不卡| 蜜桃91丨九色丨蝌蚪91桃色| 国产亚洲精品美女久久| 日韩欧美不卡| 亚洲香蕉久久| 四虎成人av| 伊人久久大香伊蕉在人线观看热v| 国产激情欧美| 99国产精品99久久久久久粉嫩| 欧美日韩午夜电影网| 精品美女久久| 蜜臀av一区二区在线免费观看| 久久伊人久久| 亚洲一区中文| 国内不卡的一区二区三区中文字幕 | 老牛影视一区二区三区| 欧美1区2区3| 国产日韩综合| 成人在线丰满少妇av| 中文字幕亚洲影视| 日韩欧美国产精品综合嫩v| 男女性色大片免费观看一区二区| 欧美成人aaa| 国产一区日韩欧美| 麻豆精品久久久| 蜜臀久久久99精品久久久久久| 国产精品13p| 日韩激情啪啪| 亚洲欧洲另类| 国模大尺度视频一区二区| 亚洲精品在线a| 久久蜜桃精品| 美女高潮久久久| 天堂精品久久久久| 91精品国产乱码久久久久久久| 国产欧美日韩免费观看| 在线一区视频| 久久三级福利| 国产精品视频一区二区三区综合 | 美女久久网站| 91精品一区二区三区综合在线爱 | 久久激情综合网| 日韩中文字幕区一区有砖一区 | 日韩在线成人| 欧美一区三区| 久久久久久夜| 国产精品一区二区三区美女| 亚洲免费激情| 欧洲一级精品| 国产一区二区精品福利地址| 欧美日韩午夜| 日本一区中文字幕| 亚洲在线国产日韩欧美| 高清av不卡| 风间由美中文字幕在线看视频国产欧美| 国产亚洲精品v| 激情久久久久久久| 日韩中文在线电影| 三上亚洲一区二区| 国产劲爆久久| 欧美综合精品| 日韩国产欧美在线视频| 夜夜嗨一区二区| 欧美日韩一二三四| 欧美日韩免费看片| 欧美久久天堂| 国产在线观看www| 国产中文欧美日韩在线| 久久99偷拍| 免费一级欧美在线观看视频| 91亚洲精品视频在线观看| 亚洲一区二区三区四区电影| 亚洲国产一区二区三区在线播放| 久久久精品五月天| 日韩久久精品| 色爱av综合网| 日韩欧美在线中字| 日韩av有码| 亚洲深夜视频| 伊伊综合在线| 日韩国产综合| 久久精品免费一区二区三区| 久久久久国产精品一区三寸| av亚洲一区二区三区| 欧美日韩精品免费观看视欧美高清免费大片 | 蜜臀久久99精品久久久画质超高清 | 色在线中文字幕| 亚洲国产成人二区| 成人日韩在线观看| 亚洲婷婷免费| 国产亚洲一级| 亚洲一区二区三区中文字幕在线观看| 爽好久久久欧美精品| 亚洲专区视频| 97久久亚洲| 欧美激情aⅴ一区二区三区| 久久久国产精品入口麻豆| 国产精品18| 在线精品亚洲欧美日韩国产| 午夜精品久久久久久久久久蜜桃| 久久中文视频| 亚洲综合不卡| 日本三级亚洲精品| 久久不见久久见中文字幕免费| 精品99在线| 久久精品国产99久久| 99riav1国产精品视频| 影音先锋久久精品| 欧美一级二级视频| 国产一区二区三区久久| 久久婷婷一区| 免费人成黄页网站在线一区二区 | 日韩黄色在线观看| 红杏一区二区三区| 久久精品国产www456c0m| 99riav国产精品| 日韩国产欧美在线播放| 久久免费精品| 国产精品99一区二区| 中文字幕成人| 精品欠久久久中文字幕加勒比| 久久国产毛片| 日韩毛片网站| 91视频精品| 免费美女久久99| 欧美在线观看天堂一区二区三区| 国产成人精品三级高清久久91| 国产精品白丝一区二区三区| 日韩av中文在线观看| 亚洲高清毛片| 久久精品国产福利| 免费观看在线综合| 青青久久av| 国产欧美日韩影院| 99综合视频| 亚洲一区资源| 91精品国产自产在线丝袜啪| 1000部精品久久久久久久久| 欧美激情福利| 亚洲精选成人| 四季av一区二区凹凸精品| 亚洲欧美网站在线观看| 日韩精品一区二区三区免费观看| 97久久中文字幕| 国产精品毛片| 秋霞影院一区二区三区| 欧美精品不卡| 在线日韩成人| 国产一区清纯| 在线中文字幕播放| 国产精品红桃| 天堂va欧美ⅴa亚洲va一国产| 国产综合亚洲精品一区二| 精品一区二区三区视频在线播放 | 成人自拍av| 久久一区欧美| 日韩高清国产一区在线| 首页国产欧美日韩丝袜| 欧美不卡视频| 日韩欧美一区二区三区在线视频| 免费在线欧美黄色|