SQLSERVER加密解密函数(非对称密钥 证书加密 对称密钥)使用方法代

2020-07-10 08:06:12易采站长站整理

–用于加密数据库中的新证书和非对称密钥,更进一步保护已加密的数据。


IF NOT EXISTS ( SELECT  name
                FROM    sys.databases
                WHERE   name = ‘BookStore’ )
    BEGIN
        CREATE DATABASE BookStore
    END
GO


USE BookStore
GO
–创建数据库主密钥
CREATE MASTER KEY ENCRYPTION BY PASSWORD = ‘password’
go


USE BookStore
GO
–重新生成数据库主密钥
ALTER MASTER KEY REGENERATE WITH ENCRYPTION BY PASSWORD =’password’


–删除数据库主密钥
USE BookStore
GO
DROP MASTER KEY



–注意:如果该数据库主密钥仍然被其他数据库对象使用,则不能被删除,这点与架构类似。

–同时一旦创建数据库主密钥,就立刻备份它是一个好的习惯。
–备份数据库主密钥
USE BookStore
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = ‘MagneticFields!’
GO
BACKUP MASTER KEY TO FILE=’D:BookStore_Master_Key.BAK’
ENCRYPTION BY PASSWORD =’4D280837!!!’


–恢复数据库主密钥
RESTORE MASTER KEY FROM FILE=’D:BookStore_Master_Key.BAK’
DECRYPTION BY PASSWORD =’4D280837!!!’
ENCRYPTION BY PASSWORD =’MagneticFields!’


–与服务主密钥类似,如果没有修改,则会收到如下提示:


–The old and new master keys are identical. No data re-encryption is required.


–示例三、从数据库主密钥删除服务主密钥

–当一个数据库主密钥被创建时,它被默认使用两种方式加密:
–服务主密钥和被使用CREATE MASTER KEY 命令中使用的密码。
–如果你不想使用服务主密码加密数据库主密钥
–(这种情况下,拥有sysadmin特权的login在不知道数据库主密钥的前提下将不能访问加密数据),
–你可以使用ALTER MASTER KEY 命令删除服务主密钥。

–简略语法如下:


ALTER MASTER KEY


ADD ENCRYPTION BY SERVICE MASTER KEY |


DROP ENCRYPTION BY SERVICE MASTER KEY


–由于服务主密钥允许拥有足够许可(如sysadmin)的用户自动使用数据库主密钥解密,
–因此,一旦删除了服务主密钥的加密,而再想修改数据库主密钥时,你必须使用一个新的命令访问它。
–OPEN MASTER KEY, 语法如下:


OPEN MASTER KEY DECRYPTION BY PASSWORD = ‘password’


–下面是一个例子:
ALTER MASTER KEY DROP ENCRYPTION BY SERVICE MASTER KEY

相关文章 大家在看