SQL server 数据加密

SQL server 数据加密简介加密是指通过使用密钥或密码对数据进行模糊处理的过程 在 SQLServer 中 加密并不能替代其他的安全设置 可以当数据库激活成功教程或是备份被盗取后的最后一道防线 通过加密 未经授权的人在没有密匙或密码的情况下所窃取的数据变成毫无意义

简介
加密是指通过使用密钥或密码对数据进行模糊处理的过程。在SQL Server中,加密并不能替代其他的安全设置,可以当数据库激活成功教程或是备份被盗取后的最后一道防线,通过加密,未经授权的人在没有密匙或密码的情况下所窃取的数据变成毫无意义。
什么是数据加密
加密是指通过使用密钥或密码对数据进行模糊处理的过程,如图:
在这里插入图片描述
加密算法的选择
SQL Server提供了比如:DES、Triple DES、TRIPLE_DES_3KEY、RC2、RC4、128 位 RC4、DESX、128 位 AES、192 位 AES 和 256 位 AES这些加密算法,没有某种算法能适应所有要求,每种算法都有长处和短处
加密
创建数据库主密钥
















CREATE MASTER KEY ENCRYPTION BY PASSWORD ='Pa$$word' 

创建证书

CREATE CERTIFICATE CertTest with SUBJECT = 'Test Certificate' GO 

在这里插入图片描述
证书加密对称密钥

CREATE SYMMETRIC KEY SymmetricByCert WITH ALGORITHM = AES_256 ENCRYPTION BY CERTIFICATE CertTest; GO 

在这里插入图片描述
SQL Server中的数据列加密(Column-level Encryption)
SQL Server在2005引入了列加密的功能。使得可以利用证书,对称密钥和非对称密钥对特定的列进行加密。在具体的实现上,根据加密解密的方式不同,内置了4对函数用于加密解密:
• EncryptByCert() 和DecryptByCert()—利用证书对数据进行加密和解密
• EncryptByAsymKey() and DecryptByAsymKey()—利用非对称密钥对数据进行加密和解密
EncryptByKey() and DecryptByKey()—利用对称密钥对数据进行加密和解密
• EncryptByPassphrase() and DecryptByPassphrase()—利用密码字段产生对称密钥对数据进行加密和解密












因此,加密数据列使用起来相对比较繁琐,需要程序在代码中显式的调用SQL Server内置的加密和解密函数,这需要额外的工作量,并且,加密或解密的列首先需要转换成Varbinary类型。

打开之前创建的由证书加密的对称密钥 OPEN SYMMETRIC KEY SymmetricByCert DECRYPTION BY CERTIFICATE CertTest; ------比如加密名字如下图 类型一定是Varbinary(500) insert SYS_User(User_Name) values(EncryptByKey(KEY_GUID('SymmetricByCert '), '789')) 

此时加密列无法直接进行查看

select CONVERT(varchar(500), User_Name) from SYS_User 

在这里插入图片描述
直接查询会显示二进制数
在这里插入图片描述




如何解密:

OPEN SYMMETRIC KEY SymmetricByCert DECRYPTION BY CERTIFICATE CertTest; SELECT CAST(DecryptByKey(User_Name) as varchar(100)) FROM SYS_User; CLOSE SYMMETRIC KEY SymmetricByCert; GO 

在这里插入图片描述
非对称密匙这里不多说,原理都差不多

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/220872.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午7:28
下一篇 2026年3月17日 下午7:28


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号