Aracılığıyla paylaş


encryptbykey (Transact-SQL)

Verileri bir simetrik anahtarkullanarak şifreler.

Konu bağlantısı simgesiTransact-SQL sözdizimi kuralları

Sözdizimi

EncryptByKey ( key_GUID , { 'cleartext' | @cleartext }
    [, { add_authenticator | @add_authenticator }
     , { authenticator | @authenticator } ] )

Bağımsız değişkenler

  • key_GUID
    GUID anahtar şifrelemek için kullanılacak olan cleartext.uniqueidentifier.

  • 'cleartext'
    ' % S'anahtar anahtarile şifrelenmiş olan verilerdir.

  • düz metin@
    Türünde bir değişken olan nvarchar, char, varchar, binary, varbinary, veya nchar , ' % s'anahtar anahtarile şifrelenmiş verileri içeren.

  • add_authenticator
    Bir doğrulayıcı ile birlikte şifreli olup olmadığını gösterir cleartext.1 Bir doğrulayıcıkullanırken olmalıdır.int.

  • @ add_authenticator
    Bir doğrulayıcı ile birlikte şifreli olup olmadığını gösterir cleartext.1 Bir doğrulayıcıkullanırken olmalıdır.int.

  • authenticator
    Gelen bir doğrulayıcıtüretmek veridir.sysname.

  • doğrulayıcı@
    Gelen bir doğrulayıcıtüretmek verileri içeren bir değişkendir.

Dönüş Türleri

varbinaryen çok 8.000 bayt boyutunu ile.

Açıklamalar

EncryptByKey simetrik anahtarkullanır.Bu anahtar açık olmalıdır.Simetrik anahtar geçerli oturumaçtıysanız, sorgu bağlamında yeniden açmanız gerekmez.

doğrulayıcı , bütün değer değiştirme şifreli alanlar önüne geçilmesine yardımcı olur.Örneğin, bordro verilerini aşağıdaki tablo düşünün.

Employee_ID

Standard_Title

Base_Pay

345

Kopya oda Yardımcısı

Fskj % 7 ^ edhn00

697

Mali işler Müdürü

M0x8900f56543

694

Veri girişi gözetmen

Cvc97824% ^ 34f

şifrelemekoparmadan, kötü niyetli bir kullanıcının şifreli metine depolandığı içeriğinden önemli bilgileri gerçekleştirip.Baş Finans yönetici Yardımcısı kopya oda birden fazla ödenen çünkü şifreli M0x8900f56543 değeri Fskj % 7 şifrelenmiş değerden izleyen ^ edhn00.Bu nedenle, tablo üzerinde alter iznine sahip herhangi bir kullanıcı kopya oda Yardımcısı bir artırma HIS verileri değiştirerek verebilirsiniz, Base_Paydepolanan verilerin bir kopyasınıalan Base_Payalan , baş Finans yönetici. Bu bütün değer değiştirme saldırı şifreleme bırakır.

Bütün değer değiştirme saldırıları şifrelemeden önce bağlamsal bilgiler için düz metin ekleyerek thwarted.Bu bağlamsal bilgiler düz metin veri değişmediğinden doğrulamak için kullanılır.

Veri şifreli olduğunda doğrulayıcı parametresi belirtilmezse, aynı doğrulayıcı DecryptByKey kullanarak verilerin şifresini çözmek için gereklidir.şifrelemesaat, doğrulayıcı karma ile birlikte düz metinşifrelenmiş. Şifre çözme saat, DecryptByKey için aynı doğrulayıcı geçirilmelidir.İkisi eşleşmezse, şifre çözme başarısız olur.Bu şifreli bu yana değer taşındı gösterir.doğrulayıcıolarak benzersiz ve değişmeyen bir değer içeren bir sütun kullanmanızı öneririz.doğrulayıcı değeri değişirse, access verileri kaybedebilirsiniz.

Simetrik şifreleme ve şifre çözme göreli olarak hızlıdır ve büyük miktarda verilerle çalışmak için uygundur.

Önemli notÖnemli

Kullanarak SQL Server şifreleme işlevleri ANSI_PADDING kapalı ayarı ile birlikte neden veri kaybı nedeniyle örtük dönüştürmeler olabilir.ANSI_PADDING hakkında daha fazla bilgi için bkz: set ANSI_PADDING (Transact-SQL).

Örnekler

Aşağıdaki örneklerde gösterildiği işlev tuşları dayanır ve sertifikalar oluşturulan nasıl yapılır: Bir sütunun veri şifrelemek.

A.Bir dize bir simetrik anahtarşifreleme

Aşağıdaki örnek, bir sütun ekler Employeetablove sütundepolanan sosyal güvenlik numarası değeri şifreler NationalIDNumber.

USE AdventureWorks2008R2;
GO

-- Create a column in which to store the encrypted data.
ALTER TABLE HumanResources.Employee
    ADD EncryptedNationalIDNumber varbinary(128); 
GO

-- Open the symmetric key with which to encrypt the data.
OPEN SYMMETRIC KEY SSN_Key_01
   DECRYPTION BY CERTIFICATE HumanResources037;

-- Encrypt the value in column NationalIDNumber with symmetric key
-- SSN_Key_01. Save the result in column EncryptedNationalIDNumber.
UPDATE HumanResources.Employee
SET EncryptedNationalIDNumber
    = EncryptByKey(Key_GUID('SSN_Key_01'), NationalIDNumber);
GO

B.kimlik doğrulaması değeri ile birlikte bir kaydı şifreleme

USE AdventureWorks2008R2;

-- Create a column in which to store the encrypted data.
ALTER TABLE Sales.CreditCard. 
    ADD CardNumber_Encrypted varbinary(128); 
GO

-- Open the symmetric key with which to encrypt the data.
OPEN SYMMETRIC KEY CreditCards_Key11
    DECRYPTION BY CERTIFICATE Sales09;

-- Encrypt the value in column CardNumber with symmetric 
-- key CreditCards_Key11.
-- Save the result in column CardNumber_Encrypted.  
UPDATE Sales.CreditCard
SET CardNumber_Encrypted = EncryptByKey(Key_GUID('CreditCards_Key11'), 
    CardNumber, 1, CONVERT( varbinary, CreditCardID) );
GO