• 技术文章 >数据库 >mysql教程

    sql怎么加密表

    清浅清浅2020-10-13 10:58:08原创2683

    sql加密表的方法:首先测试环境;然后创建数据库主密钥;接着创建证书以及一个对称秘钥;最后加密数据即可。

    sql server 怎么设置表中加密

    SQL Server支持数据库级的加密(TDE)和列级的数据加密,数据库级的加密是在在数据库中进行的,对程序来说是是透明的,开发过程中不需要做额外的操作。相对数据库级的加密来说,列级的数据加密过程有点麻烦,程序需要做一些额外的操作。下图是SQL Server的加密层次结构,可以看出SQL Server的加密是分层级的,上面层级的加密保护其子层级的加密,本文说明一个使用图中①②③④四个层次的方法来加密/解密数据的过程。

    (1)测试环境说明

    测试使用SQL Servre 2012 R2,创建如下的数据表:

    --创建测试用的用户表

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

    (2)创建数据库主密钥

    数据库主密钥(Database Master Key)在服务主密钥之下,由服务主密钥进行加密。这是一个数据库级别的密钥,可以用于为创建数据库级别的证书或非对称密钥提供加密。每一个数据库只能有一个数据库主密钥,通过T-SQL语句创建。具体代码如下:

    CREATE MASTER KEY ENCRYPTION BY PASSWORD ='passW@ord'
    GO

    Image 025.png

    (3)创建证书

    创建一个用来加密对称秘钥证书,具体代码如下:

    CREATE CERTIFICATE TestCert with SUBJECT = 'Test Certificate'
    GO

    Image 026.png

    (4)创建一个对称秘钥

    由SQL Server加密层次结构可以看出,对称密钥可以通过密码创建,也可以通过其它对称密钥、非对称密钥和证书创建。本文以证书创建一个测试用的对称秘钥,具体代码如下:

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

    Image 027.png

    (5)加密数据

    先打开证对称秘钥,再使用ENCRYPTBYKEY函数加密数据,完成后关闭对称秘钥。具体代码如下:

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

    Image 028.png

    (6)查看加密后的数据

    直接下SQL查询加密后的数据,可以看到password的内容是一串不可以阅读的16进制的字符。

    SELECT * FROM TBLUser
    GO

    Image 029.png

    (7)解密数据

    先打开证对称秘钥,再使用DecryptByKey函数解密数据,完成后关闭对称秘钥。具体代码如下:

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

    Image 030.png

    以上就是sql怎么加密表的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:sql
    上一篇:sql中如何实现日期自动补全 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • MySQL加密的性能测试_MySQL• mysql加密_MySQL• 关于MySQL加密详解
    1/1

    PHP中文网