這裡蒐索程式師資訊,查找有用的技術資料
当前位置:首页 » 编程语言 » sqlserver函数加密
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sqlserver函数加密

发布时间: 2023-04-18 07:57:51

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加密的数据库文件或备份在另一个没有证书的实例上是不能附加或恢复的。
就这一点 透明数据加密比列级加密要好用的多。