当前位置:首页 » 编程语言 » sql加密解密函数
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql加密解密函数

发布时间: 2023-03-29 05:22:11

sql server中怎么给数据库表中的用户密码加密

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是没有解密程序的。