A. sql server中怎麼給資料庫表中的用戶密碼加密
1、首先我們電腦上要安裝有SQL Server,然後要准備一個MDF資料庫文件。打開SQL Server。
B. 教你如何在SQL Server資料庫中加密數據
為了防止某些別有用心的人從外部訪問資料庫 盜取資料庫中的用戶姓名 密碼 信用卡號等其他重要信息 在我們創建資料庫驅動的解決方案時 我們首先需要考慮的的第一條設計決策就是如何加密存儲數據 以此來保證它的安全 免受被他人窺測
SQL Server中有哪一種支持可以用於加密對象和數據?從一開始就討論一下SQL Server欠缺什麼是明智的 或者是對於SQL Server中的加密部分你不應該做什麼
首先 SQL Server有兩個內置的密碼函數——即 pwdencrypt() 和 pwdpare() 同時 還有兩個SQL Server用來管理密碼哈希的沒有正式記錄的函數:pwdencrypt() 將密碼哈希過後進行存儲; pwdpare()將提供的字元串與哈希後的字元串進行比較 不幸的是 這個哈希函數不是非常安全 它可以通過字典攻擊演算法被破解(類似命令行應用程序!)
這些函數隨著SQL Server的版本發展而不斷進行修改 這也是另一個沒有使用它們的原因 早期版本的SQL Server對密碼進行的哈希 在後來的版本中無法解密 所以如果你依賴一個版本中的函數 那麼當升級的時候 所有你的加密數據就都沒有用了 除非你可以首先對其解密——這也就違背了敏液加密的最初的目的
第二 你可能會嘗試去創建一個針對你的資料庫的自製的加密解決方案 但是有以下三個理由說明你不要這樣做:
除非你是加密專家 否則胡亂編寫的加密系統只會提供非常低級的價值不高的保護 新鮮的是 單向密碼哈希或者 ROTx 形式的加密幾乎不需要費事就可以被輕松打敗
如果由於你自己的能力的缺乏而導致加密被破解 那麼你的數據就完蛋了 你需要將所有的東西進行沒有加密的備份 是嗎?(即使你加密了 那裡有沒有安全漏洞?)
當市面上提供有專業級別的 具有工業強度的加密解決方案的時候 你就不值得花費時間去自己做 把你的時間用於構建一個好的 堅固的資料庫 而不是再重新發明一次車輪
那麼 什麼才是好的加密數據的方式呢?
對於新手 微軟提供了一個自己生成的加密解敗伏決方案 CryptoAPI 對於輕量級的加密 軍用級別的安全就不在考慮范圍之內 它具有相對容易實現的優勢:管理員可以安裝一個名為CAPI 的ActiveX 控制 它可以在T SQL存儲過程中提供CryptoAPI 功能 CAPI 支持察拿攜各種類型的雙向加密和單向哈希演算法 所以管理員可以挑選最適合應用程序的問題的部分
如果你對使用微軟的解決方案不感興趣 還有一些很好的第三方的方案可以使用 一家名為ActiveCrypt 的軟體有限責任公司製造了XP_CRYPT 它是SQL Server的插件 可以在視圖 程序和觸發器中通過擴展存儲過程和用戶自定義函數(在SQL Server 中)來完成加密 你可以下載一個支持無線的MD DES 以及SHA 哈希的免費版本的應用程序; 其他的加密模型就是在比特深度上進行的 (完全版本是無限的 )在你自己的代碼中 你可以使用XP_CRYPT 與ActiveX 控制一樣(在受限的免費版本中) 對於ASP程序員來說 一個名為AspEncrypt 的組件提供了一種將高級加密整合到你的代碼中的簡單方式
lishixin/Article/program/SQLServer/201311/22397
C. SQL Server資料庫如何正確加密
當數據被存儲時候被加密,它們被使用的時候就會自動加密。在其他的情況下,你可以選擇數據是否要被加密。SQL Server資料庫可以加密下列這些組件:密碼存儲過程,視圖,觸發器,用戶自定義函數,默認值,和規則。
在伺服器和用戶之間傳輸的數據密碼加密SQL Server自動將你分配給登陸和應用角色的密碼加密。盡管當你可以從主資料庫中直接察看系統表格而不需要密碼。你不能給對這種情況作出任何修改,事實上,你根本不能破壞它。
定義加密在有些時候,如果對對象進行加密是防止將一些信息分享給他人。例如,一個存儲進程可能包含所有者的商業信息,但是這個信息不能和讓其他的人看到,即使他們公開的系統表格並可以看到對象的定義。這就是為什麼SQL Server資料庫允許你在創建一個對象的時候進行加密。為了加密一個存儲進程,使用下面形式的CREAT PROCEDURE 語句:
CREATEPROCEDUREprocerename[;number]
[@parameterdatatype
[VARYING][=defaultvalue][OUTPUT]]
[,]
[WITHRECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION]
我們關心的僅僅是可選的WITH參數。你可以詳細說明ARECOMPILE或者ENCRYPTION,或者你可以同時說明它們。ENCRYPTION關鍵字保護SQL Server資料庫它不被公開在進程中。結果,如果ENCRYPTION在激活的時候系統存儲進程sp_helptext就會被忽視,這個存儲進程將被存儲在用戶創建進程的文本中。
如果你不想要加密,你可以使用ALTER PROCEDURE,忽略WITH ENCRYPTION子句來重新創建一個進程。
為了能夠使用加密。用戶和伺服器都應該使用TCP/IP NetworkLibraries用來連接。運行適當的Network Utility和檢查Force protocol encryption,看下錶,用戶和伺服器之間的連接將不會被加密。
加密也不能完全自由。當連接確定後源碼天空
,要繼續其他的構造,並且用戶和伺服器必須運行代碼來解釋加密和解釋的包裹。這里將需要一些開銷並且當在編譯碼的時候會使進程慢下來。
D. 請問SQL怎麼對數據進行加密
--以下代碼包括創建密鑰,加密,解密和刪除密鑰
/*
1.利用對稱密鑰
搭配EncryptByKey進行數據加密
使用DecryptByKey函數進行解密
這種方式比較適合大數據量
*/
='XIAOMA'
='ZXCCERTIFICATE',EXPIRY_DATE='2015/01/01'
CREATESYMMETRICKEYSYM_TOMWITHALGORITHM=
OPENSYMMETRICKEYSYM_
SELECTCONVERT(NVARCHAR(10),Decryptbykey((Encryptbykey(Key_guid('SYM_TOM'),N'TOM3'))))
CLOSESYMMETRICKEYSYM_TOM
DROPSYMMETRICKEYSYM_TOM
DROPCERTIFICATETOMCERT;
DROPMASTERKEY;
--或--
=AES_256ENCRYPTIONBYPASSWORD='ZXC123456'
='ZXC123456'
SELECTCONVERT(VARCHAR(10),Decryptbykey(Encryptbykey(Key_guid('ZXC'),'YHDH_C')))
CLOSESYMMETRICKEYZXC;
DROPSYMMETRICKEYZXC;
/*
2.利用非對稱密鑰
搭配EncryptByAsymKey進行數據加密
使用DecryptByAsymKey函數進行解密
用於更高安全級別的加解密數據
*/
='XIAOMA'
=RSA_2048ENCRYPTIONBYPASSWORD='ZXC123456'
(DECRYPTIONBYPASSWORD='ZXC123456')
SELECTCONVERT(VARCHAR(100),Decryptbyasymkey(Asymkey_id('ABC'),Encryptbyasymkey(Asymkey_id('ABC'),'ZXC123456')))
DROPASYMMETRICKEYABC;
DROPMASTERKEY
/*
3.利用憑證的方式
搭配EncryptByCert進行加密
DecryptByCert函數進行解密
比較類似非對稱密鑰
*/
='XIAOMA'
='ZXCCERTIFICATE',EXPIRY_DATE='2015/01/01'
SELECTCONVERT(VARCHAR(20),Decryptbycert(Cert_id('ZXC'),Encryptbycert(Cert_id('ZXC'),'123456')))
DROPCERTIFICATEZXC;
DROPMASTERKEY
--或--
='Mary5',
SECRET='123456';
ALTERLOGINUser1
ADDCREDENTIALAlterEgo
DropCREDENTIALAlterEgo
DROPCREDENTIALAlterEgo
/*
4.利用密碼短語方式
搭配EncryptBypassPhrase進行加密
使用DecryptByPassPhrase函數來解密
比較適合一般的數據加解密
*/
SELECTCONVERT(VARCHAR(100),Decryptbypassphrase('xiaoma',Encryptbypassphrase('xiaoma','123456')))
E. sql2008 資料庫 建表 表中的某一個欄位要加密處理
/*
1.利用對稱密鑰
搭配EncryptByKey進行數據jiami
使用DecryptByKey函數進行jiemi
這種方式比較適合大數據量
*/
CREATE SYMMETRIC KEY ZXC WITH ALGORITHM = AES_256 ENCRYPTION BY PASSWORD = 'ZXC123456'
OPEN SYMMETRIC KEY ZXC DECRYPTION BY PASSWORD = 'ZXC123456'
--jiami
SELECT Encryptbykey(Key_guid('ZXC'), 'YHDH_C')
--jiemi
SELECT CONVERT(VARCHAR(10), Decryptbykey())
CLOSE SYMMETRIC KEY ZXC;
DROP SYMMETRIC KEY ZXC;
/*
2.利用非對稱密鑰
搭配EncryptByAsymKey進行數據jiami
使用DecryptByAsymKey函數進行jiemi
用於更高安全級別的加jiemi數據
*/
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'XIAOMA'
CREATE ASYMMETRIC KEY ABC WITH ALGORITHM=RSA_2048 ENCRYPTION BY PASSWORD = 'ZXC123456'
ALTER ASYMMETRIC KEY ABC WITH PRIVATE KEY (DECRYPTION BY PASSWORD = 'ZXC123456')
--jiami
Select Encryptbyasymkey(Asymkey_id ('ABC'), 'ZXC123456')
SELECT CONVERT(VARCHAR(100), Decryptbyasymkey (Asymkey_id('ABC'),96B1F7E7B7AC3E945E106D82 ))
DROP ASYMMETRIC KEY ABC;
DROP MASTER KEY
/*
3.利用憑證的方式
搭配EncryptByCert進行jiami
DecryptByCert函數進行jiemi
比較類似非對稱密鑰
*/
CREATE CERTIFICATE ZXC
ENCRYPTION BY PASSWORD = 'xiaoxiao'
WITH SUBJECT = 'DB_Encrypt_Demo Database Encryption Certificate',
START_DATE = '2015-10-1'
--jiami
Select Encryptbycert(Cert_id('ZXC'), '123456')
--jiemi
SELECT convert(Varchar(10), Decryptbycert(Cert_id('ZXC'), ,N'xiaoxiao'))
DROP CERTIFICATE ZXC;
/*
4.利用mima短語方式
搭配EncryptBypassPhrase進行jiami
使用DecryptByPassPhrase函數來jiemi
比較適合一般的數據加jiemi
*/
--jiami
Select Encryptbypassphrase('xiaoma', '123456')
--jiemi
SELECT CONVERT(VARCHAR(100), Decryptbypassphrase('xiaoma', ))
F. sql資料庫中欄位如何加密
你將你的數據先加密好了。再存儲到資料庫。讀取的時候,解密了再顯示就可以了
G. SQL數據文件怎麼加密
首先要說明不能限制 「誰」,只能限制部分人
其次是加密數據肯定要降低效率
一般情況你數據表中數據不用全部加密,某些關鍵欄位加密就行了
但是你這個只能用可逆轉加密,而且加密後 查詢檢索會麻煩些
不能直接復制,使用 Blob 欄位就類型就行了
要加密簡單點用 Base64編碼好了,也不能直接復制,肉眼看不出來,拿走也不能直接用
其它的加密方式 效果好些,但效率就低了。
H. sql server中怎麼給資料庫表中的用戶密碼加密
在SQl2005下自帶的函數hashbytes()
,此函數是微軟在SQL
SERVER
2005中提供的,可以用來計算一個字元串的
MD5
和
SHA1
值,使用方法如下:
--獲取123456的MD5加密串
select
hashbytes('MD5',
'123456')
;
--獲取123456的SHA1加密串
select
hashbytes('SHA1',
'123456')
;有了這個函數可以在sqlserver中為字元串進行加密,但是hashbytes()
函數的返回結果是
varbinary類型,(以
0x
開頭
16
進制形式的二進制數據)通常帶冊情況下,我們需要的都是字元串型的數據,很多人首先想到的可能就是用
CAST
或
Convert
函數將varbinary
轉換為
varchar,但這樣轉換後的結果會是亂碼,正確轉換
varbinary
可變長度二進制型數據到
16
進嘩行橡制字元串應該亂旁使用系統內置函數
sys.fn_varbintohexstr()(只在sqlserver2005下有),如下所示:select
sys.fn_varbintohexstr(hashbytes('MD5',
'123456'))
然後就可以截取需要的部分select
lower(right(sys.fn_varbintohexstr(hashbytes('MD5','123456')),32))為md5加密串。