アプリケーションには、セキュリティ上の理由から暗号化する必要がある列がいくつかあります。これは SQL Server 2008 でどのように可能ですか? また、それらを常に手動で復号化する必要がありますか、それとも自動的に行われますか?
ありがとう、
サチン
アプリケーションには、セキュリティ上の理由から暗号化する必要がある列がいくつかあります。これは SQL Server 2008 でどのように可能ですか? また、それらを常に手動で復号化する必要がありますか、それとも自動的に行われますか?
ありがとう、
サチン
を作成してCertificate
からSymmetric Key
、証明書を使用するを作成できます。
CREATE CERTIFICATE YourCertificate
WITH SUBJECT = 'Encrypted Content';
GO
CREATE SYMMETRIC KEY SSN_Key
WITH ALGORITHM = AES_256
ENCRYPTION BY CERTIFICATE YourCertificate;
GO
DecryptByKey
復号化するには: 次を使用できます。
MSDN の例は次のとおりです。
SELECT CardNumber, CardNumber_Encrypted AS 'Encrypted card number',
CONVERT(nvarchar,
DecryptByKey(CardNumber_Encrypted, 1 ,
HashBytes('SHA1', CONVERT(varbinary, CreditCardID)))) AS 'Decrypted card number'
FROM Sales.CreditCard;
http://msdn.microsoft.com/en-us/library/ms179331(v=sql.105).aspx
MSDN の投稿をご覧ください。方法: データの列を暗号化する
まず、次のコードを使用して assym キーを作成します。
USE [yourDB]
GO
CREATE ASYMMETRIC KEY ClaveAsym
WITH ALGORITHM = RSA_2048 ---->Take a look in this type of algorithms
ENCRYPTION BY PASSWORD = 'yourKey'
GO
これを覚えておいてください。復号化または暗号化する変数は常に宣言する必要があります。
DECLARE @KEYID INT SET @KEYID = AsymKey_ID('ClaveAsym')
データの復号化
SELECT columnA, CAST(DecryptByAsymKey(@keyid, columnUser, N'yourKey') AS VARCHAR(100)), CONVERT(VARCHAR(MAX), DECRYPTBYASYMKEY(@keyId, columnPass, N'yourKey')) FROM yourTable
データの暗号化
DECLARE @User VARCHAR(MAX), @pass VARCHAR(MAX)
SET @User = 'yourUser'
sET @pass = 'yourPass'
DECLARE @KEYID INT SET @KEYID = AsymKey_ID('ClaveAsym')
INSERT INTO yourTable( User, passw) VALUES EncryptByAsymKey (@keyid, @User ), EncryptByAsymKey (@keyid, @pass))