1、首先我們電腦上要安裝有SQL Server,然後要准備一個MDF資料庫文件。打開SQL Server。
㈡ 在線求MD5 SQL密碼解密大神們幫幫忙
MD5加密規則是不可逆的。 加密過程用演算法描述如下: (1)對明文password進行md5加密,獲得密文md5(password)。 (2)使用截取函數截取加密後的密文,從第beginnumber位置開始截取number位數值,得到密碼A,其中A=left(md5(password),beginnumber-1)。 (3)使用截取函數截取加密後的明文的number位數後的值B,其中 B=right(md5(password),md5-digit -(beginnumber+number-1))。 (4)使用隨機函數gen_key(number)填充被截取的number的值。 (5)變換後的密碼值為encrypt_password =A&get_key(number)&B 變數說明: password:客戶端提交的原始密碼 encrypt_password:經過處理後的密碼 beginnumber:對原始密碼開始截取的位置(0number:對密碼截取位數(0md5-digit:md5取16位或者32位值 解密過程跟加密過程有些類似,先對輸入的明文進行加密,接著從beginnumber處截取前半部分得到A′,後半部分得到B′,然後從資料庫中讀出密碼中的A和B部分,最後如果A=A′並且B=B′,則認為用戶輸入的密碼跟資料庫中的密碼是匹配的。
㈢ 尋求高手解開sql語句
SQLServer資料庫管理的常用SQL語句
1. 查看資料庫的版本
select @@version
2. 查看資料庫所在機器操作系統參數
exec master..xp_msver
3. 查看資料庫啟動的參數
sp_configure
4. 查看資料庫啟動時間
select convert(varchar(30),login_time,120) from master..sysprocesses where spid=1
查看資料庫伺服器名和實例名
print 'Server Name...............: ' + convert(varchar(30),@@SERVERNAME)
print 'Instance..................: ' + convert(varchar(30),@@SERVICENAME)
5. 查看所有資料庫名稱及大小
sp_helpdb
重命名資料庫用的SQL
sp_renamedb 'old_dbname', 'new_dbname'
6. 查看所有資料庫用戶登錄信息
sp_helplogins
查看所有資料庫用戶所屬的角色信息
sp_helpsrvrolemember
修復遷移伺服器時孤立用戶時,可以用的fix_orphan_user腳本或者LoneUser過程
更改某個數據對象的用戶屬主
sp_changeobjectowner [@objectname =] 'object', [@newowner =] 'owner'
注意: 更改對象名的任一部分都可能破壞腳本和存儲過程。
把一台伺服器上的資料庫用戶登錄信息備份出來可以用add_login_to_aserver腳本
7. 查看鏈接伺服器
sp_helplinkedsrvlogin
查看遠端資料庫用戶登錄信息
sp_helpremotelogin
8.查看某資料庫下某個數據對象的大小
sp_spaceused @objname
還可以用sp_toptables過程看最大的N(默認為50)個表
查看某資料庫下某個數據對象的索引信息
sp_helpindex @objname
還可以用SP_NChelpindex過程查看更詳細的索引情況
SP_NChelpindex @objname
clustered索引是把記錄按物理順序排列的,索引占的空間比較少。
對鍵值DML操作十分頻繁的表我建議用非clustered索引和約束,fillfactor參數都用默認值。
查看某資料庫下某個數據對象的的約束信息
sp_helpconstraint @objname
9.查看資料庫里所有的存儲過程和函數
use @database_name
sp_stored_proceres
查看存儲過程和函數的源代碼
sp_helptext '@procere_name'
查看包含某個字元串@str的數據對象名稱
select distinct object_name(id) from syscomments where text like '%@str%'
創建加密的存儲過程或函數在AS前面加WITH ENCRYPTION參數
解密加密過的存儲過程和函數可以用sp_decrypt過程
10.查看資料庫里用戶和進程的信息
sp_who
查看SQL Server資料庫里的活動用戶和進程的信息
sp_who 'active'
查看SQL Server資料庫里的鎖的情況
sp_lock
進程號1--50是SQL Server系統內部用的,進程號大於50的才是用戶的連接進程.
spid是進程編號,dbid是資料庫編號,objid是數據對象編號
查看進程正在執行的SQL語句
dbcc inputbuffer ()
推薦大家用經過改進後的sp_who3過程可以直接看到進程運行的SQL語句
sp_who3
檢查死鎖用sp_who_lock過程
sp_who_lock
11.收縮資料庫日誌文件的方法
收縮簡單恢復模式資料庫日誌,收縮後@database_name_log的大小單位為M
backup log @database_name with no_log
dbcc shrinkfile (@database_name_log, 5)
12.分析SQL Server SQL 語句的方法:
set statistics time {on | off}
set statistics io {on | off}
圖形方式顯示查詢執行計劃
在查詢分析器->查詢->顯示估計的評估計劃(D)-Ctrl-L 或者點擊工具欄里的圖形
文本方式顯示查詢執行計劃
set showplan_all {on | off}
set showplan_text { on | off }
set statistics profile { on | off }
13.出現不一致錯誤時,NT事件查看器里出3624號錯誤,修復資料庫的方法
先注釋掉應用程序里引用的出現不一致性錯誤的表,然後在備份或其它機器上先恢復然後做修復操作
alter database [@error_database_name] set single_user
修復出現不一致錯誤的表
dbcc checktable('@error_table_name',repair_allow_data_loss)
或者可惜選擇修復出現不一致錯誤的小型資料庫名
dbcc checkdb('@error_database_name',repair_allow_data_loss)
alter database [@error_database_name] set multi_user
CHECKDB 有3個參數:
repair_allow_data_loss 包括對行和頁進行分配和取消分配以改正分配錯誤、結構行或頁的錯誤,
以及刪除已損壞的文本對象,這些修復可能會導致一些數據丟失。
修復操作可以在用戶事務下完成以允許用戶回滾所做的更改。
如果回滾修復,則資料庫仍會含有錯誤,應該從備份進行恢復。
如果由於所提供修復等級的緣故遺漏某個錯誤的修復,則將遺漏任何取決於該修復的修復。
修復完成後,請備份資料庫。
repair_fast 進行小的、不耗時的修復操作,如修復非聚集索引中的附加鍵。
這些修復可以很快完成,並且不會有丟失數據的危險。
repair_rebuild 執行由 repair_fast 完成的所有修復,包括需要較長時間的修復(如重建索引)。
執行這些修復時不會有丟失數據的危險。
㈣ 請問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')))
㈤ SQL 2005 ENCRYPTBYKEY加密、DECRYPTBYKEY解密
就是 varbinary 型啊,用varbinary欄位保存數據就行了
然後,DECRYPTBYKEY()的輸入參數,也是varbinary型的
================
非要用varchar,用如下兩個函數
fn_varbintohexsubstring
fn_varbintohexstr
但是varbinary的一個位元組在varchar裡面占兩個位元組,不是很浪費么
㈥ SQL DES數據加密 解密問題!急急急,求各位大蝦幫幫忙!
下面是我在SQL 2008 R2中調試成功的語句,已對關鍵語句做了備注,其它的看不懂的,網路一下吧。
--建立對稱密鑰
--=DESENCRYPTIONBYPASSWORD='123456'
OPENSYMMETRICKEYkey1
DECRYPTIONBYPASSWORD='123456'--必須與原設裂察定口令一做判樣
DECLARE@strNVARCHAR(100),@EncryptedVARBINARY(MAX),@DEEncryptedvarchar(8000)
SET@str=N'AABBCC'--要加密的字元串
SELECT@Encrypted=ENCRYPTBYKEY(KEY_GUID('key1'),@str)
SELECT@DEEncrypted=CAST(DECRYPTBYKEY(@Encrypted)ASNVARCHAR(100))
SELECT'加密'=@Encrypted,'解密'=@DEEncrypted--顯示加密與解密結果
UPDATE[_TABLE1]SETmingwen=@Encrypted,mingeen=@DEEncrypted
CLOSESYMMETRICKEYkey1
--刪除對稱密鑰
--DROPSYMMETRIC肆胡茄KEYkey1
㈦ 在SQL中如何使用AES_ENCRYPT()函數
AES_ENCRYPT() 和 AES_DECRYPT()
這兩個函數有兩個參數
前擾喚一個是要加密或緩液凱解密的埋慶字串
後一個是一個自己指定的Key
原型:AES_ENCRYPT(str,key_str) AES_DECRYPT(str,key_str)
SELECT AES_ENCRYPT('加密字元串',KEY);
SELECT AES_DECRYPT('解密字元串',KEY);
㈧ MS SQL DES數據加密 解密,急求各位大蝦幫幫小弟!
前些天已答過,實測是有效的,你試過嗎?
(SQL2008下通過測試)
注意,VARBINARY定義時的長度,下面是以max最長來的,如果你的資料庫VARBINARY定義不同,請相應的改一下。另外,請看懂下面每一句的意義後再去做。
學編程不能靠抄哦,呵呵。
--建立對稱密鑰
--=DESENCRYPTIONBYPASSWORD='123456'
OPENSYMMETRICKEYkey1
DECRYPTIONBYPASSWORD='123456'--必須與原設定口令一樣
DECLARE@strNVARCHAR(100),@EncryptedVARBINARY(MAX),@DEEncryptedvarchar(8000)
SET@str=N'AABBCC'--要加密的字元串
SELECT@Encrypted=ENCRYPTBYKEY(KEY_GUID('key1'),@str)
SELECT@DEEncrypted=CAST(DECRYPTBYKEY(@Encrypted)ASNVARCHAR(100))
SELECT'加密'=@Encrypted,'解密'=@DEEncrypted--顯示加密與解密結果
UPDATE[_TABLE1]SETmingwen=@Encrypted,mingeen=@DEEncrypted
CLOSESYMMETRICKEYkey1
--刪除對稱密鑰
--DROPSYMMETRICKEYkey1
㈨ MSSQL中遇到存儲過程加密出錯不能查看
分類: 電腦/網路 >> 互聯網
問題描述:
我以前用的時候好好的,可以添加存儲過程,也可以查看,修改等等.
可是最近突然不能查看了,一查仔禪喊看就報
錯誤20585 ****** Encrypted object is not transferable, and script can not be generated. ******
網上說是襲租加密了,我用了他們的解密函數也能解密和查看了,可是我想知道是為什麼突然發生這種現象呢?
解析:
存儲過程解密(破解函數,過程,觸發器,視圖.僅限於SQLSERVER2000)
--*/
/*--調用示例:
--解密指定存儲過程
exec sp_decrypt '存儲過程名'
--*/
create PROCEDURE sp_decrypt(@objectName varchar(50))
AS
begin
begin tran
declare @objectname1 varchar(100),@varbin varbinary(8000)
declare @sql1 nvarchar(4000),@sql2 nvarchar(4000),@sql3 nvarchar(4000),@sql4 nvarchar(4000),@sql5 nvarchar(4000),@sql6 nvarchar(4000),@sql7 nvarchar(4000),@sql8 nvarchar(4000),@sql9 nvarchar(4000),@sql10 nvarchar(4000)
DECLARE @OrigSpText1 nvarchar(4000), @OrigSpText2 nvarchar(4000) , @OrigSpText3 nvarchar(4000), @resultsp nvarchar(4000)
declare @i int,@status int,@type varchar(10),@parentid int
declare @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(8000),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 #temp
set @k=0
while @k<=@number
begin
if exists(select 1 from sy *** ents where id=object_id(@objectname) and number=@k)
begin
if @type='P'
set @sql1=(case when @number>1 then 'ALTER PROCEDURE '+ @objectName +';'+rtrim(@k)+' WITH ENCRYPTION AS '
else 'ALTER PROCEDURE '念野+ @objectName+' WITH ENCRYPTION AS '
end)
if @type='TR'
set @sql1='ALTER TRIGGER '+@objectname+' ON '+OBJECT_NAME(@parentid)+' WITH ENCRYPTION FOR INSERT AS PRINT 1 '
if @type='FN' or @type='TF' or @type='IF'
set @sql1=(case @type when 'TF' then
'ALTER FUNCTION '+ @objectName+'(@a char(1)) returns @b table(a varchar(10)) with encryption as begin insert @b select @a return end '
when 'FN' then
'ALTER FUNCTION '+ @objectName+'(@a char(1)) returns char(1) with encryption as begin return @a end'
when 'IF' then
'ALTER FUNCTION '+ @objectName+'(@a char(1)) returns table with encryption as return select @a as a'
end)
if @type='V'
set @sql1='ALTER VIEW '+@objectname+' WITH ENCRYPTION AS SELECT 1 '
set @q=len(@sql1)
set @sql1=@sql1+REPLICATE('-',4000-@q)
select @sql2=REPLICATE('-',4000),@sql3=REPLICATE('-',4000),@sql4=REPLICATE('-',4000),@sql5=REPLICATE('-',4000),@sql6=REPLICATE('-',4000),@sql7=REPLICATE('-',4000),@sql8=REPLICATE('-',4000),@sql9=REPLICATE('-',4000),@sql10=REPLICATE('-',4000)
exec(@sql1+@sql2+@sql3+@sql4+@sql5+@sql6+@sql7+@sql8+@sql9+@sql10)
end
set @k=@k+1
end
set @k=0
while @k<=@number
begin
if exists(select 1 from sy *** ents where id=object_id(@objectname) and number=@k)
begin
select @colid=max(colid) from #temp where number=@k
set @n=1
while @n<=@colid
begin
select @OrigSpText1=ctext,@encrypted=encrypted,@status=status FROM #temp WHERE colid=@n and number=@k
SET @OrigSpText3=(SELECT ctext FROM sy *** ents WHERE id=object_id(@objectName) and colid=@n and number=@k)
if @n=1
begin
if @type='P'
SET @OrigSpText2=(case when @number>1 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 @OrigSpText2=(case @type when 'TF' then
'CREATE FUNCTION '+ @objectName+'(@a char(1)) returns @b table(a varchar(10)) with encryption as begin insert @b select @a return end '
when 'FN' then
'CREATE FUNCTION '+ @objectName+'(@a char(1)) returns char(1) with encryption as begin return @a end'
when 'IF' then
'CREATE FUNCTION '+ @objectName+'(@a char(1)) returns table with encryption as return select @a as a'
end)
if @type='TR'
set @OrigSpText2='CREATE TRIGGER '+@objectname+' ON '+OBJECT_NAME(@parentid)+' WITH ENCRYPTION FOR INSERT AS PRINT 1 '
if @type='V'
set @OrigSpText2='CREATE VIEW '+@objectname+' WITH ENCRYPTION AS SELECT 1 '
set @q=4000-len(@OrigSpText2)
set @OrigSpText2=@OrigSpText2+REPLICATE('-',@q)
end
else
begin
SET @OrigSpText2=REPLICATE('-', 4000)
end
--start counter
SET @i=1
--fill temporary variable
SET @resultsp = replicate(N'A', (datalength(@OrigSpText1) / 2))
--loop
WHILE @i<=datalength(@OrigSpText1)/2
BEGIN
SET @resultsp = stuff(@resultsp, @i, 1, NCHAR(UNICODE(substring(@OrigSpText1, @i, 1)) ^
(UNICODE(substring(@OrigSpText2, @i, 1)) ^
UNICODE(substring(@OrigSpText3, @i, 1)))))
SET @i=@i+1
END
set @varbin=cast(@OrigSpText1 as varbinary(8000))
set @resultsp=(case when @encrypted=1
then @resultsp
else convert(nvarchar(4000),case when @status&2=2 then unpress(@varbin) else @varbin end)
end)
print @resultsp
--execute( @resultsp)
set @n=@n+1
end
end
set @k=@k+1
end
drop table #temp
rollback tran
end
GO
㈩ sql server裡面的內容加密了,用什麼方法可以解密
應該是程序寫入資料庫前加密的,要解密的話,先要查一下是用什麼方式加密的,有沒有解決程序。
如md5是沒有解密程序的。