SQL2012数据库加密方法(四)

2015-01-24 01:42:10 · 作者: · 浏览: 23
285CCC5E93DF6E2C49840FAB74DAD913685F4B54EA89CB888B314192C9EA2643A244BD6540C18F6103258CB3BC0014BAE121572248BE725B44FB5543CEF6D732DDE950DC9435D35C4D1AD9522F20EBFAA5070C51F7BC8521FB167F68FE8D451 */ -- 解密数据 SELECT CustID, Name, City, CONVERT(VARCHAR, DecryptByCert(Cert_ID('User1Certificate'),CreditCardType)) AS CreditCardType FROM Customer2; /* CustID Name City CreditCardType 1 Roy Wu GZ Visa */ -- 不需要使用一个表来对数据进行加密时中,用法。 DECLARE @CipherText VARBINARY(500); SET @CipherText = EncryptByCert(Cert_ID('User1Certificate'), 'Secret text'); PRINT CONVERT(VARCHAR, DecryptByCert(Cert_ID('User1Certificate'),@CipherText)) ; -- 2、非对称密钥 -- 用私钥受用户-创建非对称密钥对提供的密码。 CREATE ASYMMETRIC KEY User1AsymmetricKey AUTHORIZATION User1 WITH ALGORITHM = RSA_2048 ENCRYPTION BY PASSWORD = 'User1Password1'; -- 创建另一个数据库主密钥的保护 CREATE ASYMMETRIC KEY User2AsymmetricKey AUTHORIZATION User2 WITH ALGORITHM = RSA_2048; -- 创建由 dbo 拥有的另一种。 CREATE ASYMMETRIC KEY DBOAsymmetricKey WITH ALGORITHM = RSA_2048; INSERT INTO Customer2 VALUES (2, 'Roy_User1', 'ZG', EncryptByAsymKey(AsymKey_ID('User1AsymmetricKey'), 'MasterCard')); GO INSERT INTO Customer2 VALUES (3, 'Roy_User2', 'ZG', EncryptByAsymKey(AsymKey_ID('User2AsymmetricKey'), 'Discover')); GO -- 查看数据 SELECT * FROM Customer2 WHERE CustID > 1; /* CustId Name City CreditCardType 2 Roy_User1 ZG 0x84A8C3CDE2C46E45D770CAD909A68E9B566B6D8176D4BE7C582DCD6AF9CB15C2EF0DB3F3B13323BF69B63AE8FC864FC9DA91138DDB12AEFD4680AA5791C6F745421A4011ECA5B34B4A1AA5EB61A0BBEAA918E5EAD76A2A13E63D121DCE230F9722A036503A2D781FA9
DBEA6502524437E9A62DD94C1557A97704F629687B3B1B6C061A6883D6CC87DBC84C47ADCBBB4D7B3E2BA3A20C86BC28479B93981515FCBF602A360BFDF24227A1C99CC30F3D9D88C7D42E4565DF0C098307F82469E9F17942E4EE73753E132E26F64362D4228C77FF4B1F72FA522A2318AA02AB7E1E0432BFC84F01914E244664E8FDB837056ED261E74063D85F1E4AA44C65AED99214 3 Roy_User2 ZG 0xED893EBAD6790543E6196E248853EEA0C600E7C49625857F20862F44FDCB8460E13A3A7575173A93250E72006EA6551C551FB92D0014F8FCD845BBABCCAE55CB344415169B96C80BAB7B127FDCD8E056DED2B26366AD4E6DA27F993C84C90EE37AC16CB95636DA776818ECE01EE531CD2A927EA8816167F52A40C0D7396CE46C0BBBD28226D543F0B55D3120B4BA693220D08065C9BBF3E8918016E0774DF32FC3044697E111EB1B3FDAF11B03F8CFFF23C53339E8D920781361B679759CA5C168E8D5DCAB94025F25162268259C18FC2FA4DC541A25757708C61928E0E535BDDF80A3068A483EC1C5F4F772E2F442672A7979481F9A60ED5DAF849CC9A07D9A */ -- CustID=2查看已解密的数据。必须通过在用于保护私钥的密码。 SELECT CustID, Name, City, CONVERT(VARCHAR, DecryptByAsymKey(AsymKey_ID('User1AsymmetricKey'), CreditCardType, N'User1Password1')) AS CreditCardType FROM Customer2 WHERE CustID = 2; /* CustID Name City CreditCardType 2 Roy_User1 ZG MasterCard */ -- CustID=3查看已解密的数据 SELECT CustID, Name, City, CONVERT(VARCHAR, DecryptByAsymKey(AsymKey_ID('User2AsymmetricKey'), CreditCardType)) AS CreditCardType FROM Customer2 WHERE CustID = 3; -- 试图查看解密后的数据,但 custid=3 错了钥匙。返回用于加密数据的空值。 SELECT CustID, Name, City, CONVERT(VARCHAR, DecryptByAsymKey(AsymKey_ID('User1AsymmetricKey'), CreditCardType)) AS CreditCardType FROM Customer2 WHERE CustID = 3; /* CustID Name City CreditCardType