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文章来源:https://www.toymoban.com/news/detail-450998.html
文章来源地址https://www.toymoban.com/news/detail-450998.html
到了这里,关于sqlserver加密隐私字段(不侵入程序)-Always Encrypted的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!