一零五四、sqlserver对数据进行证书加密、解密

1、测试表

CREATE TABLE TBLUser 
(    
    Name             nvarchar(30),     
    Password         varbinary(1000)
)

2、创建数据库主密钥

CREATE master key  ENCRYPTION BY PASSWORD ='passW@ord'

此处使用密码"passW@ord"对主密钥进行加密,主密钥用于保护数据库中的其他加密对象,例如对称密钥和证书

3、创建对称密钥

CREATE CERTIFICATE TestCert with SUBJECT = 'Test Certificate'

4、使用对称秘钥加密数据

CREATE SYMMETRIC KEY TestSymmetric WITH ALGORITHM = AES_256 ENCRYPTION BY CERTIFICATE TestCert 

创建了一个TestSymmetric的对称密钥,使用AES_256算法加密,并由名为TestCert的证书进行加密

5、使用对称秘钥加密数据

OPEN SYMMETRIC KEY TestSymmetric DECRYPTION BY CERTIFICATE TestCert;
INSERT INTO TBLUser values('张三', ENCRYPTBYKEY(Key_Guid(N'TestSymmetric'), '123456'));
CLOSE SYMMETRIC KEY TestSymmetric;

用来进行数据加密和解密,该语句使用TestSymmetric的对称密钥和TestCert的证书来加密和解密数据。

具体来说,该语句打开TestSymmetric的对称密钥,并使用TestCert的证书对其进行解密。接着,该语句向TBLUser的表中插入一个名为'张三'的用户,并将其密码'123456'使用TestSymmetric对称密钥进行加密。最后,该语句关闭TestSymmetric的对称密钥

6、查看加密后的数据

SELECT * FROM TBLUser

7、解密数据

OPEN SYMMETRIC KEY TestSymmetric DECRYPTION BY CERTIFICATE TestCert;
SELECT Name, CAST(DecryptByKey(password) as varchar(100)) Password FROM TBLUser;
CLOSE SYMMETRIC KEY TestSymmetric;

使用TestSymmetric的对称密钥和TestCert的证书来解密数据。

具体来说,该语句打开TestSymmetric的对称密钥,并使用TestCert的证书对其进行解密。接着,该语句从TBLUser的表中选择所有用户的名称和密码,并将密码使用TestSymmetric对称密钥进行解密,最终以明文形式返回。最后,该语句关闭名为TestSymmetric的对称密钥


猜你喜欢

转载自blog.csdn.net/m0_54925305/article/details/130090430
今日推荐