SQL-2008中的代码安全-非对称密钥加密-Server (sql2019安装教程图解)

教程大全 2025-07-18 11:54:09 浏览

导读: 非对称密钥包含数据库级的内部公钥和私钥,它可以用来加密和解密SQL Server数据库中的数据,它可以从外部文件或程序集中导入,也可以在 SQL Server数据库 中生成。它不像证书,不可以备份到文件。这意味着一旦在SQL Server中创建了它,没有非常简单的方法在其他用户数据库中重用相同的密钥。非对称密钥对于数据库加密属于高安全选项,因而需要更多的SQL Server资源。接下来通过实例分析,来讲解非对称密钥加密。

我们看一组例子:

示例一、创建非对称密钥

创建非对称密钥使用如下命令:

CREATE ASYMMETRIC KEY 创建非对称密钥。()

view plaincopy to clipboardprint?–以下语句创建一个非对称密钥asymDemoKeyuse DB_Encrypt_DemogoCREATE ASYMMETRIC KEY asymDemoKey –创建非对称密钥名称WITH ALGORITHM = RSA_512 –加密安全类型ENCRYPTION BY PASSWORD = ‘TestASYM123!’ –密码–以下语句创建一个非对称密钥asymDemoKeyuse DB_Encrypt_DemogoCREATE ASYMMETRIC KEY asymDemoKey –创建非对称密钥名称WITH ALGORITHM = RSA_512 –加密安全类型ENCRYPTION BY PASSWORD = ‘TestASYM123!’ –密码

示例二、查看当前数据库中的非对称密钥

使用目录视图sys.asymmetric_keys()来查看。

view plaincopy to clipboardprint?–查看当前数据库中的非对称密钥use DB_Encrypt_DemogoSELECT name, algorithm_desc, pvt_key_encryption_type_descFROM sys.asymmetric_keys–结果返回/*name algorithm_desc pvt_key_encryption_type_descasymDemoKey RSA_512 ENCRYPTED_BY_PASSWORD*/–查看当前数据库中的非对称密钥use DB_Encrypt_DemogoSELECT name, algorithm_desc, pvt_key_encryption_type_descFROM sys.asymmetric_keys–结果返回/*name algorithm_desc pvt_key_encryption_type_descasymDemoKey RSA_512 ENCRYPTED_BY_PASSWORD*/

示例三、修改非对称密钥的私钥密码

你可以使用带有ENCRYPTION BY PASSWORD和DECRYPTION BY PASSWORD选项的ALTER ASYMMETRIC KEY()修改私钥的密码。

view plaincopy to clipboardprint?–修改私钥密码ALTER ASYMMETRIC KEY asymDemoKey–要修改的密钥名称WITH PRIVATE KEY –私钥(ENCRYPTION BY PASSWORD = ‘newpasswordE4D352F280E0’,–指定新密码DECRYPTION BY PASSWORD = ‘TestASYM123!’)–旧密码是用来解密的–修改私钥密码ALTER ASYMMETRIC KEY asymDemoKey–要修改的密钥名称WITH PRIVATE KEY –私钥(ENCRYPTION BY PASSWORD = ‘newpasswordE4D352F280E0’,–指定新密码DECRYPTION BY PASSWORD = ‘TestASYM123!’)–旧密码是用来解密的

示例四、使用非对称密钥对数据进行加密和解密 。

由于同时需要公钥和密钥,在维护保密数据时使用非对称密钥来加密数据是非常安全的方式。但同时用于大数据集时将消耗更多的资源。

不推荐使用非对称密钥对数据加密,但它仍然是一个选择。一旦将非对称密钥加到数据库,就可以用来加密和解密数据。

用到以下两个sql函数:

EncryptByAsymKey 加密数据。()

DecryptByAsymKey解密数据。()

注意,在通过证书加密时,DecryptByAsymKey返回的是varbinary 类型的加密数据。

下面是一个例子:

view plaincopy to clipboardprint?use DB_Encrypt_Demogo–创建需要加密的数据Create Table BankUser(PKID int primary key identity(10001,1),UserNo varbinary(1000) null,CurState smallint default(0) not null)goinsert into BankUser(UserNo,CurState)VALUES (EncryptByAsymKey(AsymKey_ID(‘asymDemoKey’),’137492837583249ABR’),1)–插入一条记录,字段UserNo存储了加密的号码值goselect PKID,Curstate, cast(UserNo as nvarchar(1000)) as UserNofrom BankUserwhere PKID=10001use DB_Encrypt_Demogo–创建需要加密的数据Create Table BankUser(PKID int primary key identity(10001,1),UserNo varbinary(1000) null,CurState smallint default(0) not null)goinsert into BankUser(UserNo,CurState)VALUES (EncryptByAsymKey(AsymKey_ID(‘asymDemoKey’),’137492837583249ABR’),1)–插入一条记录,字段UserNo存储了加密的号码值goselect PKID,Curstate, cast(UserNo as nvarchar(1000)) as UserNofrom BankUserwhere PKID=10001

明文结果:

查看未加密的数据:

view plaincopy to clipboardprint?SELECT PKID,Curstate,cast(DecryptByAsymKey(AsymKey_ID(‘asymDemoKey’),UserNo,N’newpasswordE4D352F280E0′)as varchar(1000)) as UserNo –需要原始私钥from BankUser where PKID=10001SELECT PKID,Curstate,cast(DecryptByAsymKey(AsymKey_ID(‘asymDemoKey’),UserNo,N’newpasswordE4D352F280E0′)as varchar(1000)) as UserNo –需要原始私钥from BankUser where PKID=10001

示例五、删除非对称密钥

命令:DROP ASYMMETRIC KEY 删除指定的非对称密钥()

例子:

view plaincopy to clipboardprint?DROP ASYMMETRIC KEY asymDemoKeyDROP ASYMMETRIC KEY asymDemoKey

小结:

1、本文主要介绍非对称密钥的创建、删除、查看以及用它来修改私钥、进行数据的加密和解密。

2、非对称密钥包含数据库级的内部公钥和私钥,它可以用来加密和解密SQL Server数据库中的数据。

3、非对称密钥对于数据库加密属于高安全选项,因而需要更多的SQL Server资源,不推荐使用。

sql2019教程图解

希望大家通过本文的学习,能掌握更多的数据库安全加密知识,为以后能更好的管理数据库加密工作。

【编辑推荐】


SQL Server 2008 R2 版本如何找回sa密码

用windows身份登录重置密码,sqlserver的sql认证密码都是加密的无法获取

用户 'sa' 登录失败。该用户与可信 SQL Server 连接无关联。

确认你的MSSQL 打过SP4补丁 关键问题 检查你的数据库的认证模式,windows 和 混合模式,需要SA登陆的请选择混合模式。 检查计算机1433连接端口,1434数据端口是否打开 针对sql 2005 进入管理器中“安全”==》“用户”==》双击用户(弹出属性对话框)==》“状态”把状态改成enable,退出管理器重新登录(用户验证模式) 检查你的连接程序的链接地址是否是127.0.0.1 或 {local} 以上操作都不行,重新建立数据库,注意操作系统的网络名最好不要使用默认的关键字,有遇到过网络名是关键字死活连接不上去的情况。

怎样更改数据库sql2008的登录方式

如果在安装过程中选择“Windows 身份验证模式”,则 sa 登录名将被禁用。如果稍后将身份验证模式更改为“SQL Server 和 Windows 身份验证模式”,则 sa 登录名仍处于禁用状态。若要启用 sa 登录帐户,请使用 ALTER LogIN 语句。 安全说明: sa 帐户是一个广为人知的 SQL Server 帐户,并且经常成为恶意用户的攻击目标。除非您的应用程序需要使用 sa 帐户,否则请不要启用它。为 sa 登录名使用一个强密码非常重要。 sa 登录名只能使用 SQL Server 身份验证连接到服务器。 更改安全身份验证模式 在 SQL Server Management Studio 的对象资源管理器中,右键单击服务器,再单击“属性”。 在“安全性”页上的“服务器身份验证”下,选择新的服务器身份验证模式,再单击“确定”。 在 SQL Server Management Studio 对话框中,单击“确定”以确认需要重新启动 SQL Server。 从 SQL Server Management Studio 重新启动 SQL Server 2008 在对象资源管理器中,右键单击您的服务器,再单击“重新启动”。如果运行有 SQL Server 代理,则也必须重新启动该代理。 使用 Transact-SQL 启用 sa 登录帐户 执行下列语句以启用 sa 密码并分配一个密码。 ALTER LOGIN sa ENABLE ; GOALTER LOGIN sa WITH PASSWORD = ; GO 使用 Management Studio 启用 sa 登录帐户 在对象资源管理器中,依次展开“安全”、“登录名”,右键单击“sa”,再单击“属性”。 在“常规”页上,您可能需要为 sa 登录名创建密码并确认该密码。 在“状态”页上的“登录”部分中,单击“启用”,然后单击“确定”。

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

发表评论

热门推荐