A. sqlserver 中怎麼樣給現有的資料庫加密。就是不想把自己資料庫的存儲過程等信息給其他人看到。
你把你的資料庫修改登錄時只能用用戶名和密碼登錄,不允許windows登錄,然後為他創建一個用戶,這個用戶賦予的許可權你自己選,你想讓他看什麼就給他許可權。不想就別給他賦許可權即可。
B. sql中varbinary加密的簡單方法有什麼
1、可以使用二個SQLServer未公開的函數:
>PwdCncrypt(),實現對輸入數據進行加密後返回二進制形式的加密內容,
>PwdCompare(),用於檢查明文是否與加密的二進制數據內容相等,沒有解密函數。
這慶旅二個函數主要是用於SQLServer內部自己調用。優點是調用方便,缺點是這二個函數沒有公開,就意味著可能穗差顫改變,並且不兼容原來的,在使用上存在風險。
2、若想控制密鑰,有4個函數
ENCRYPTBYASYMKEY() --非對稱密鑰
ENCRYPTBYCERT() --證書加密
ENCRYPTBYKEY() --對稱密鑰
ENCRYPTBYPASSPHRASE() --通行短語(PassPhrase)加密
使用猜敗起來相對會復雜些。
C. 教你如何在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
D. c# sqlserver 數據加密解密
比較簡單的做法是數據在存入資料庫之前用c#進行加密,然後再存入資料庫,讀取數據之後,用相應的解密方法對數據進行解密。
但是,如果你一定要在存儲過程中加密的話,可以使用c#創建好對應的加密解密方法,然後生成一個加解密的類庫dll,在sqlserver中引入該dll中的加密方法進行加密(Sqlserver調用dll的方法sqlserver調用dll),程序中可以直接調用該dll中的解密方法,也可以把解密方法直接寫在程序中。
E. sqlserver 怎麼查看錶的數據是加密的
在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加密串。
F. 道與魔:SqlServer存儲過程/函數加/解密
存儲過程 存儲函數的加密 WITH ENCRYPTION<! [if !supportLineBreakNewLine] ><! [endif] >CREATE procere dbo sp_XML_main@table_name nvarchar( )= @dirname nvarchar( )= WITH ENCRYPTIONasbegin endgo存儲過程 存儲函數的解密(以下是一位絕世高人編寫的代碼)if exists (select * from dbo sysobjects where id = object_id(N [dbo] [sp_decrypt] ) and OBJECTPROPERTY(id N IsProcere ) = )drop procere [dbo] [sp_decrypt]GO/* 破解函談氏消數 過程 觸發器 視圖 僅限於SQLSERVER 作者:J All rights reserved*//* 調用示例 解密指定存儲過程exec sp_decrypt AppSP_test 對所有的存儲過程解密declare tb cursor forselect name from sysobjects where xtype= P and status> and name<> sp_decrypt declare @name sysnameopen tbfetch next from tb into @namewhile @@fetch_status= beginprint /* 存儲過程 [ +@name+ ] */ exec sp_decrypt @namefetch next from tb into @nameendclose tbdeallocate tb */if exists (select * from dbo sysobjects where id = object_id(N [dbo] [SP_DECRYPT] ) and OBJECTPROPERTY(id N IsProcere ) = )drop procere [dbo] [SP_DECRYPT]GOCREATE PROCEDURE sp_decrypt(@objectName varchar( ))ASbeginset nocount on 破解位元組不受限制 適用於SQLSERVER 存儲過程 函數 視圖 觸發器 修正上一版視圖觸發器不能正確解密錯誤 發現有錯 請E_MAIL begin trandeclare @objectname varchar( ) @varbin varbinary( )declare @sql nvarchar( ) @sql varchar( ) @sql nvarchar( ) @sql nvarchar( )DECLARE @OrigSpText nvarchar( ) @OrigSpText nvarchar( ) @OrigSpText nvarchar( ) @resultsp nvarchar( )declare @i int @status int @type varchar( ) @parentid intdeclare @colid int @n int @q int @j int @k int @encrypted int @number int核鋒select @type=xtype @parentid=parent_obj from sysobjects where id=object_id(@ObjectName)含知create table #temp(number int colid int ctext varbinary( ) encrypted int status int)insert #temp SELECT number colid ctext encrypted status FROM sy *** ents WHERE id = object_id(@objectName)select @number=max(number) from #tempset @k= while @k<=@numberbeginif exists(select from sy *** ents where id=object_id(@objectname) and number=@k)beginif @type= P set @sql =(case when @number> then ALTER PROCEDURE + @objectName + ; +rtrim(@k)+ WITH ENCRYPTION AS else ALTER PROCEDURE + @objectName+ WITH ENCRYPTION AS end)if @type= TR begindeclare @parent_obj varchar( ) @tr_parent_xtype varchar( )select @parent_obj=parent_obj from sysobjects where id=object_id(@objectName)select @tr_parent_xtype=xtype from sysobjects where id=@parent_objif @tr_parent_xtype= V beginset @sql = ALTER TRIGGER +@objectname+ ON +OBJECT_NAME(@parentid)+ WITH ENCRYPTION INSTERD OF INSERT AS PRINT endelsebeginset @sql = ALTER TRIGGER +@objectname+ ON +OBJECT_NAME(@parentid)+ WITH ENCRYPTION FOR INSERT AS PRINT endendif @type= FN or @type= TF or @type= IF set @sql =(case @type when TF then ALTER FUNCTION + @objectName+ (@a char( )) returns @b table(a varchar( )) with encryption as begin insert @b select @a return end when FN then ALTER FUNCTION + @objectName+ (@a char( )) returns char( ) with encryption as begin return @a end when IF then ALTER FUNCTION + @objectName+ (@a char( )) returns table with encryption as return select @a as a end)if @type= V set @sql = ALTER VIEW +@objectname+ WITH ENCRYPTION AS SELECT as f set @q=len(@sql )set @sql =@sql +REPLICATE( @q)select @sql =REPLICATE( )set @sql = exec(@sql select @colid=max(colid) from #temp where number=@kset @n= while @n<=CEILING( *(@colid )/ ) and len(@sQL )<= beginset @sql =@sql + +@ set @n=@n+ endset @sql =@sql + ) exec sp_executesql @sql N @sql nvarchar( ) @ varchar( ) @sql =@sql @=@sql endset @k=@k+ endset @k= while @k<=@numberbeginif exists(select from sy *** ents where id=object_id(@objectname) and number=@k)beginselect @colid=max(colid) from #temp where number=@kset @n= while @n<=@colidbeginselect @OrigSpText =ctext @encrypted=encrypted @status=status FROM #temp WHERE colid=@n and number=@kSET @OrigSpText =(SELECT ctext FROM sy *** ents WHERE id=object_id(@objectName) and colid=@n and number=@k)if @n= beginif @type= P SET @OrigSpText =(case when @number> then CREATE PROCEDURE + @objectName + ; +rtrim(@k)+ WITH ENCRYPTION AS else CREATE PROCEDURE + @objectName + WITH ENCRYPTION AS end)if @type= FN or @type= TF or @type= IF SET @OrigSpText =(case @type when TF then CREATE FUNCTION + @objectName+ (@a char( )) returns @b table(a varchar( )) with encryption as begin insert @b select @a return end when FN then CREATE FUNCTION + @objectName+ (@a char( )) returns char( ) with encryption as begin return @a end when IF then CREATE FUNCTION + @objectName+ (@a char( )) returns table with encryption as return select @a as a end)if @type= TR beginif @tr_parent_xtype= V beginset @OrigSpText = CREATE TRIGGER +@objectname+ ON +OBJECT_NAME(@parentid)+ WITH ENCRYPTION INSTEAD OF INSERT AS PRINT endelsebeginset @OrigSpText = CREATE TRIGGER +@objectname+ ON +OBJECT_NAME(@parentid)+ WITH ENCRYPTION FOR INSERT AS PRINT endendif @type= V set @OrigSpText = CREATE VIEW +@objectname+ WITH ENCRYPTION AS SELECT as f set @q= len(@OrigSpText )set @OrigSpText =@OrigSpText +REPLICATE( @q)endelsebeginSET @OrigSpText =REPLICATE( )endSET @i= SET @resultsp = replicate(N A (datalength(@OrigSpText ) / ))WHILE @i<=datalength(@OrigSpText )/ BEGINSET @resultsp = stuff(@resultsp @i NCHAR(UNICODE(substring(@OrigSpText @i )) ^ lishixin/Article/program/SQLServer/201311/21965
G. sqlserver 有沒有md5函數
Sqlserver內置函數實現MD5
16位:
SELECT substring(sys.fn_sqlvarbasetostr(HashBytes('MD5', '需要加密字元串')),3,16)
32位
SELECT substring(sys.fn_sqlvarbasetostr(HashBytes('MD5','需要加密字元串')),3,32)
H. sqlserver EncryptByPassPhrase函數如何對 數字類型的值加密,
你在輸入的時候加上trim這個方法,先去掉兩端的空格
le.Password = UserHepler.md5(txtPwd.Text);我原來做了一個,這個就是我密碼使用MD5加密方式,然後讀取的時候先把密碼也加密了
I. sqlserver透明加密和列級加密哪個好
到了SQL Server2005,引入了列級加密。使得加密可以對特定列執行,這個過程涉及4對加密和解密的內置函數
SQL Server 2008時代,則引入的了透明數據加密(TDE),所謂的透明數據加密,就是加密在資料庫中進行,但從程序的角度來看就好像沒有加密一樣,和列級加密不同的是,TDE加密的級別是整個資料庫。使用TDE加密的資料庫文件或備份在另一個沒有證書的實例上是不能附加或恢復的。
就這一點 透明數據加密比列級加密要好用的多。