sql数据加密有几种方法?
对sql中的数据进行加密,有5种方法,
1、利用CONVERT改变编码方式:
利用该函数把文字或数据转换成VARBINARY。但该方式不具备保护数据的能力,仅避免浏览数据的过程中能直接看到敏感数据的作用。
2、利用对称密钥:
搭配EncryptByKey进行数据加密。使用DecryptByKey函数进行解密。这种方式比较适合大数据量。因为对称密钥的过程耗用资源较少。
3、利用非对称密钥:
搭配EncryptByAsymKey进行数据加密。使用DecryptByAsymKey函数进行解密。用于更高安全级别的加解密数据。因为耗用资源叫多。
4、利用凭证的方式:
搭配EncryptByCert进行加密和DecryptByCert函数进行解密。比较类似非对称密钥。
5、利用密码短语方式:
搭配EncryptBypassPhrase进行加密,使用DecryptByPassPhrase函数来解密。可以使用有意义的短语或其他数据行,当成加密、解密的关键字,比较适合一般的数据加解密。
扩展资料:
sql数据库的组成:
在正式学习SQL语言之前,首先让我们对SQL语言有一个基本认识,介绍一下SQL语言的组成:
1、一个SQL数据库是表(Table)的集合,它由一个或多个SQL模式定义。
2、一个SQL表由行集构成,一行是列的序列(集合),每列与行对应一个数据项。
3、一个表或者是一个基本表或者是一个视图。基本表是实际存储在数据库的表,而视图是由若干基本表或其他视图构成的表的定义。
4、一个基本表可以跨一个或多个存储文件,一个存储文件也可存放一个或多个基本表。每个存储文件与外部存储上一个物理文件对应。
5、用户可以用SQL语句对视图和基本表进行查询等操作。在用户角度来看,视图和基本表是一样的,没有区别,都是关系(表格)。
6、SQL用户可以是应用程序,也可以是终端用户。SQL语句可嵌入在宿主语言的程序中使用,宿主语言有FORTRAN,COBOL,PASCAL,PL/I,C和Ada语言等。
SQL用户也能作为独立的用户接口,供交互环境下的终端用户使用。
参考资料来源:百度百科-SQL数据库
推荐于2017-12-15
例如:
declare @pwd varchar(50)
declare @en_pwd varbinary(256)
select @pwd='abc'
select @en_pwd=pwdencrypt(@pwd)
select pwdcompare(@pwd,@en_pwd)
返回的结果为1,表示相符
这里还有一个小的细节要注意一下,pwdcompare()其实还有一个参数:
pwdcompare(@pwd,@en_pwd,1|0)
最后一个参数取1的时候,密码区分大小写的,不过默认是取0的,也就是加密之后,不区分大小写。
偶然间发现这样一篇贴子,说pwdencrypt()有漏洞,使用使用的时候还是小心为好。
描述:
Microsoft SQL Server 2000缓冲区溢出漏洞允许获取系统控制权
详细:
Microsoft SQL Server 2000有一个内置的散列函数,名为pwdencrypt()。
这个函数存在一个缓冲/堆栈溢出漏洞,允许攻击者发动拒绝服务攻击,使SQL Server崩溃,通过合适的方式构造shellcode,可能引起攻击者能以系统权限执行任何指令。
下面的例子通过超长字符串(353个字符A)将使SQL Server2000崩溃:
Select pwdencrypt(REPLICATE('A',353))
有的系统可能需要更长的字符串才能达到攻击效果,但1000个字符无论如何都足够让SQL Server崩溃了。
攻击方法:
下面的例子通过超长字符串(353个字符A)将使SQL Server2000崩溃:
Select pwdencrypt(REPLICATE('A',353))
有的系统可能需要更长的字符串才能达到攻击效果,但1000个字符无论如何都足够让SQL Server崩溃了。
尚未发现有效的,能导致非法获取系统控制权的shellcode代码出现。
2013-09-08
2013-09-08
广告 您可能关注的内容 |