sqlserver加密隐私字段(不侵入程序)-Always Encrypted

sqlserver版本:2019

SQL Server Management Studio:v18.9.1

springboot:springboot2.3.10R

客户端:

        右击要加密的表->选择加密列->

 

可现在执行也可生成powershell脚本执行

 

 完成即可

此时查询出来是加密后的数据

 想要查询出解密数据需要将连接属性的加密属性打开

1.点击选项->Always Encrypted->启用

重新连接打开新查询页面,再次查询:

 

2.应用程序端:

之前我连接使用的是

sqljdbc4这个jar包后来发现不适用于有加密的sqlserver数据库

换成

<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <version>9.4.0.jre11</version>
</dependency>

由于我用的是jdk11,其他版本可在sqlserver官网或者maven仓库中下载

换版本之前要把之前下载的去掉

2.配置文件

在原基础的sqlserver连接配置上加上

columnEncryptionSetting=Enabled即可

 3.注意如果是windows启动程序此时加载加密数据库会存在问题:

        com.microsoft.sqlserver.jdbc.AuthenticationJNI.DecryptColumnEncryptionKey(Ljava/lang/String;Ljava/lang/String;[B)[B

此问题是由于window加载是会使用到

SQLServerColumnEncryptionCertificateStoreProvider此类

官网有此解释:

 按照官网所说需要将dll文件放入path中,我启动时打印了path,然后将dll文件复制进其中一个目录即可。

 再启动程序正常使用。

        注:这个加密是有权限控制的

补充:

        因为加密是依赖于证书的,在windows导出证书:

控制面板->internet选项->内容->证书->导出证书

 linux下导入pfx证书:

        pk12util -d sql:$HOME/.pki/nssdb -i 证书名.pfx

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值