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数据库

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-12-15
在Sql Server 中经常要对存在表中数据加密,比如密码字段,我们可以利用Sql 中自带的加密函数pwdencrypt()来进行加密,加密之后无法解密码,需要使用pwdcompare('原文','密码')对比,如果返回结果为1,表示密码相符,如果为0,表示不符
例如:
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代码出现。本回答被网友采纳
第2个回答  2013-09-08
可以弄个 MD5 加密的 写数据时进行加密 读取时在解密
第3个回答  2013-09-08
楼上说MD5能解密 搞笑哦
相似回答