要在程序中對欄位字元進行處理,SQL本身不支持加密
㈡ sql 資料庫與客戶端的數據傳輸怎麼加密
1、需要看的那種加密會需要在客戶端獨立設置解密才行,這樣加大了編程工作量,數據在傳輸過程中。
2、高級版本的sqlserver已經加密,特別是帳號密碼不是明文傳輸。
3、加解密過程首先是CPU高開銷操作,過度頻繁一定會帶來性能問題
4、SQL Server 支持安全套接字層 (SSL),並且與 Internet 協議安全 (IPSec) 兼容。所以,sql server是支持在傳輸數據時進行加密的。
㈢ sqlserver EncryptByPassPhrase函數如何對 數字類型的值加密,
你在輸入的時候加上trim這個方法,先去掉兩端的空格
le.Password = UserHepler.md5(txtPwd.Text);我原來做了一個,這個就是我密碼使用MD5加密方式,然後讀取的時候先把密碼也加密了
㈣ sqlserver 中怎麼樣給現有的資料庫加密。就是不想把自己資料庫的存儲過程等信息給其他人看到。
你把你的資料庫修改登錄時只能用用戶名和密碼登錄,不允許windows登錄,然後為他創建一個用戶,這個用戶賦予的許可權你自己選,你想讓他看什麼就給他許可權。不想就別給他賦許可權即可。
㈤ 不製作證書是否能加密SQLSERVER與客戶端之間
本人介紹了不使用製作證書的方式來對傳輸的數據進行加密的方法,實際上設置客戶端而不設置伺服器端也是可以的
不過設置客戶端比較麻煩,還需要在連接字元串里加上encrypt屬性設置為Yes
設置伺服器端和設置客戶端的加密的區別
伺服器端:所有的連接都是加密的
客戶端:只是設置了加密的那個連接是加密的,其他沒有設置加密的連接依然是明文傳輸數據
當然,使用SQLSERVER自生成的證書安全性是不及自己製作的證書的安全性高!!
https://user.qzone.qq.com/70477468/infocenter
㈥ c# sqlserver 數據加密解密
比較簡單的做法是數據在存入資料庫之前用c#進行加密,然後再存入資料庫,讀取數據之後,用相應的解密方法對數據進行解密。
但是,如果你一定要在存儲過程中加密的話,可以使用c#創建好對應的加密解密方法,然後生成一個加解密的類庫dll,在sqlserver中引入該dll中的加密方法進行加密(Sqlserver調用dll的方法sqlserver調用dll),程序中可以直接調用該dll中的解密方法,也可以把解密方法直接寫在程序中。
㈦ 視圖如何加密,讓第三方用戶查看不到其中的SQL語句
如果是sqlserver,創建視圖的時候,就可以採用 with encryption 進行加密,然後就可以避免用戶查看了
視圖加密方法
createviewvw_test---視圖名vw_test
withencryption---加密視圖
as
select*fromtest---視圖中的sql腳本信息
--------------對已存在的視圖加密方法分享-------
alterviewvw_test---視圖名vw_test
withencryption---加密視圖
as
select*fromtest---視圖中的sql腳本信息
請參閱以上代碼,如有疑問,及時溝通。
㈧ 怎麼實現對SQL Server資料庫的欄位進行加密和解密
將那個欄位設為主鍵
------解決方案--------------------------------------------------------
要不然
你只能在邏輯上做判斷、先查詢數據是否有當前的符號、如果有
就另填。沒有的話,就插入
------解決方案--------------------------------------------------------
------解決方案--------------------------------------------------------
要是這個欄位不是外鍵的話,可以設成主鍵,否則,可以由資料庫的標識欄位做主鍵,給這一列
加上唯一約束
------解決方案--------------------------------------------------------
主鍵或者unique
約束(這個oracle
有,不知sqlserver
有沒有)。
這個好像不行吧。
------解決方案--------------------------------------------------------
設主鍵。用sequence
自增。設置主鍵
然後也可以寫觸發器做判斷修改
㈨ sqlserver透明加密和列級加密哪個好
到了SQL Server2005,引入了列級加密。使得加密可以對特定列執行,這個過程涉及4對加密和解密的內置函數
SQL Server 2008時代,則引入的了透明數據加密(TDE),所謂的透明數據加密,就是加密在資料庫中進行,但從程序的角度來看就好像沒有加密一樣,和列級加密不同的是,TDE加密的級別是整個資料庫。使用TDE加密的資料庫文件或備份在另一個沒有證書的實例上是不能附加或恢復的。
就這一點 透明數據加密比列級加密要好用的多。
㈩ MsSQLServer是如何加密口令的
SQL SERVER的口令到資料庫存儲的加密方法,也是讓人怪異的。其過程如下:
在獲得網路解密密碼的口令以後在
005F9D5A處call SQLSORT_14,實現一個轉換為大寫口令緩沖進行保存。
然後在004def6d處調用一個函數取出資料庫中的加密的PASSWORD,其形式如下:
2個位元組的頭0x0100(固定)
4個位元組的HASH加秘KEY
20個位元組的HASH1
20個位元組的HASH2
如我取出的一個例子:
fx:0x0100 1751857F
固定 補充KEY HASH1 HASH2
口令是:123456
SQL首先用4個位元組的HASH加秘KEY補上其兩處口令的緩沖,一個為大寫,一個為小寫。然後其加密過程如下C函數
CryptAcquireContextW(&hProv,NULL,L("Microsoft Base Cryptographic Provider v1.0"),1,0xf0000000);
CryptCreateHash(hProv,0x8004,NULL,NULL,&hhash);
CryptCreateHash(hProv,0x8004,NULL,NULL,&hHash);
005F9DFE:
CryptHashData(hhash,passwdbuf,0x12,NULL);passwdbuf是小寫的passwd緩沖區,然後附加一個KEY,如上例子就是對
{'1','2''3''4''5''6',0x17,0x51,0x85,0x7F}這樣的一個字串進行HASH加密
CryptHashData(hHash,PASSWDBUF,0x12,NULL);PASSWDBUF是大寫的passwd緩沖區,然後附加一個KEY
005F9E3E:
CryptGetHashParam(hhash,2,&passwdout,&outlen,0);取出passwdbuf是小寫的passwd的加密值
CryptGetHashParam(hHash,2,&PASSWDOUT,&OUTLEN,0);取出passwdbuf是大寫的passwd的加密值
這兩個相加就是真正的資料庫中的PASSWORD加密欄位
為什麼說以上方法是脆弱的呢?其實其真正的加密長度生成只有20個位元組。
小寫口令的HASH1+大寫口令的HASH1拼接的40位HASH值的安全度還不如一個直接20位的HASH值來得安全。因為大家都知道這兩個值的因果關系,
提供給了解密者更多的信息。
如因為其演算法一樣,如果HASH1=HASH2,就可以判斷口令肯定是未使用字母,只使用了數字和符號的口令,如上取出的123456口令的HASH,兩個HASH完全相等。
就是使用了字母,其知道補充的KEY,演算法,兩個加密字串的關系,其解應該也是大大的簡化了。
當然我沒研究過加密演算法,只是感覺上這種加密方式真是不安全,呵呵,希望解密演算法的高手指點。