SQLServer 数据加密解密:在多个服务器实例中创建相同对称密钥(三)
来源:互联网 发布:linux限制ip访问次数 编辑:程序博客网 时间:2024/06/10 01:29
创建相同的对称密钥非常容易。使用相同的 KEY_SOURCE、ALGORITHM 和 IDENTITY_VALUE 密钥选项创建的对称密钥将是相同的。
--创建测试use [Temp]go-- drop table EnryptTest create table EnryptTest ( id int not null primary key, EnryptData nvarchar(20), ) goinsert into EnryptTest values(1,N'888888'),(2,N'888888'),(3,N'123456'),(4,N'A'); goalter table EnryptTest add SymmetricCol varbinary(max) go select * from EnryptTest; --删除测试信息use [Temp]godrop symmetric key MySymmetric; godrop certificate Mycertificate; go drop master key goalter table EnryptTest drop column SymmetricCol; gouse [Temp]go--创建数据库主密钥create master key encryption by password = N'Hello@MyMasterKey';go--创建以服务主密钥加密的证书create certificate Mycertificate with subject = N'EnryptData certificate'; go--创建对称密钥create symmetric key MySymmetricwithkey_source = 'Hello kk key_source',--指定从中派生密钥的通行短语identity_value = 'Hello kk identity_value', --该短语标记使用临时密钥加密的数据的GUID algorithm = aes_128 encryption by certificate Mycertificate; go--打开对称密钥open symmetric key MySymmetric decryption by certificate Mycertificate; go --加密数据update EnryptTest set SymmetricCol = encryptbykey(key_guid('MySymmetric'),convert(varchar(max),EnryptData)) go -- 解密数据(正常)select *,convert(varchar(max ) ,convert (varchar(max ),decryptbykey(SymmetricCol))) from EnryptTest go --关闭加密close symmetric key MySymmetric;go--备份主密钥backup master key to file = N'D:\Temp_MasterKey' encryption by password = N'Hello@MyMasterKey' go --备份证书(包括私密)backup certificate Mycertificate to file = N'D:\mycertificate.cer' with private key ( file = N'D:\mycertificate_saleskey.pvk' , encryption by password = N'Hello@Mycertificate' ); go--把主密钥和证书的备份拷贝到另一台服务器--把表EnryptTest数据传输到另一个服务器实例的数据库中(怎么做都行)--注意不是使用备份还原迁移数据库(备份还原数据库时会存在原有的主密钥和证书)
-------------------现在在另一台服务器实例中----------------------------use [temp2] --如数据在这个数据库中go-- 还原数据库主密钥 restore master key from file = N'C:\Software\Temp_MasterKey' decryption by password = N'Hello@MyMasterKey' encryption by password = N'Hello@MyMasterKey' --New Password go-- 打开当前数据库的数据库主密钥 open master key decryption by password = N'Hello@MyMasterKey' go -- 还原证书 create certificate Mycertificate from file = N'C:\Software\mycertificate.cer' with private key( file = N'C:\Software\mycertificate_saleskey.pvk', decryption by password = N'Hello@Mycertificate'); go--创建对称密钥(两个服务器的对称密钥信息必须相同)create symmetric key MySymmetricwithkey_source = 'Hello kk key_source',--指定从中派生密钥的通行短语identity_value = 'Hello kk identity_value', --该短语标记使用临时密钥加密的数据的GUID algorithm = aes_128 encryption by certificate Mycertificate; go--打开对称密钥open symmetric key MySymmetric decryption by certificate Mycertificate; go -- 解密数据(成功)select *,convert(varchar(max ) ,convert (varchar(max ),decryptbykey(SymmetricCol))) from EnryptTest go --关闭加密close symmetric key MySymmetric;go--删除测试信息use [Temp2]godrop symmetric key MySymmetric; godrop certificate Mycertificate; go drop master key;godrop table EnryptTest;go
解密成功:
更多参考:如何在两个服务器上创建相同的对称密钥
0 0
- SQLServer 数据加密解密:在多个服务器实例中创建相同对称密钥(三)
- ocx中对称密钥加密解密的简单实例
- 加密解密---非对称密钥/对称密钥
- 报表服务器无法解密用于访问报表服务器数据库中的敏感数据或加密数据的对称密钥
- 报表服务器无法解密用于访问报表服务器数据库中的敏感数据或加密数据的对称密钥。必须还原备份密钥或删除所有加密的内容。
- 报表服务器无法解密用于访问报表服务器数据库中的敏感数据或加密数据的对称密钥。必须还原备份密钥或删除所有加密的内容。
- 图解密码技术笔记(一)对称密码(共享密钥密码)——用相同的密钥进行加密和解密
- 使用密钥加密、解密实例
- php rsa加密解密实例(非对称加密)
- SQLServer 数据加密解密:常用的加密解密(一)
- SQLServer 数据加密解密:常用的加密解密(一)
- SQLServer 数据加密解密:常用的加密解密(一)
- 使用X.509数字证书加密解密实务(三)-- 使用RSA证书结合对称加密技术加密长数据
- 使用X.509数字证书加密解密实务(三)-- 使用RSA证书结合对称加密技术加密长数据
- 使用X.509数字证书加密解密实务(三)-- 使用RSA证书结合对称加密技术加密长数据
- xiaogui9527 使用X.509数字证书加密解密实务(三)-- 使用RSA证书结合对称加密技术加密长数据
- 使用对称密钥加密数据示例
- 加密解密(三)--Java中的非对称加密算法
- 看似小事,却极易写错
- [Qt]界面效果setWindowFlags()
- hdu 1029
- 最小树-克鲁斯卡尔
- Web挖掘技术可实现应用目标
- SQLServer 数据加密解密:在多个服务器实例中创建相同对称密钥(三)
- 《数据结构编程实验》 4.2.1Adding Reversed Numbers
- 【HDU】 2883 kebab(最大流+时间段离散化)
- 在C/C++计算机语言中动态分配二维数组
- Android ListView与adapt
- Codeforces 295 Div2 B.Two Buttons
- 05作用域-AngularJS基础教程
- PPP数据帧的格式
- MyEclipse中hibernate通过数据库逆向生成java实体类