Aracılığıyla paylaş


ENCRYPTBYKEY (Transact-SQL)

Encrypts verileri kullanarak simetrik anahtar.

Topic link iconTransact-SQL sözdizimi kuralları

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

Bağımsız değişkenler

  • key_GUID
    Şifrelemek için kullanılan anahtarın GUID'dircleartext.uniqueidentifier.

  • 'cleartext'
    Ortak anahtar ile şifrelenmesi için veri kısmında.

  • @ düz metin
    Türünde bir değişken minvarchar,char,varchar,binary,varbinary, orncharşifreli anahtar. için veriyi içeren

  • add_authenticator
    Gösterir mi bir doğrulayıcı ile birlikte şifrelenircleartext.1 Kullanırken olmalı bir doğrulayıcı.int.

  • @ add_authenticator
    Gösterir mi bir doğrulayıcı ile birlikte şifrelenircleartext.1 Kullanırken olmalı bir doğrulayıcı.int.

  • authenticator
    Is the data from which to derive an authenticator.sysname.

  • Kimlik Doğrulayıcı
    Bir doğrulayıcı oluşturmak istediğiniz verileri içeren değişken belirtilir.

Dönüş Türleri

varbinary en çok 8.000 bayt boyutu ile.

Remarks

EncryptByKey simetrik bir anahtar kullanır.Bu anahtar, açık olması gerekir.Simetrik anahtar geçerli oturumda açık durumda, sorgu bağlamında yeniden açmak gerekmez.

Kimlik Doğrulayıcı, bütün değer yerine şifreli alan önüne geçilmesine yardımcı olur.Örneğin, aşağıdaki tabloda, bordro verilerini göz önünde bulundurun.

Employee_ID

Standard_Title

Base_Pay

345

Oda yardımcı kopyalama

Fskj % 7 ^ edhn00

697

Baş mali yetkili

M0x8900f56543

694

Veri girişi Yöneticisi

Cvc97824% ^ 34f

Şifreleme koparmadan, kötü niyetli bir kullanıcının, ciphertext depolandığı içerik önemli bilgileri algılayın.Bir baş Finans yetkili bir kopyası oda Yardımcısı birden fazla ödeme için şifreli M0x8900f56543 Fskj % 7 şifrelenmiş büyük olmalıdır, izleyen ^ edhn00.Tablo üzerinde ALTER iznine sahip herhangi bir kullanıcı verin kopyası oda Yardımcısı bir artırma ile kullanıcının verileri değiştirmeBase_Pay baş Finans memuru. Base_Pay alanında depolanan verilerin bir kopyasını alan Bu bütün değer değiştirme saldırı şifreleme tamamen atlar.

Şifrelemeden önce düz metine kavramsal bilgileri ekleyerek bütün değer değiştirme saldırıları thwarted.Bu bağlamsal bilgiler düz metin veriler değil taşındı doğrulamak için kullanılır.

Veri şifreli olduğunda bir kimlik doğrulayıcı parametresi belirtilirse, aynı kimlik DecryptByKey kullanarak verilerin şifresini çözmek için gereklidir.Şifreleme saat, doğrulayıcı karma düz metin'ile birlikte şifrelenir.Şifre çözme saat DecryptByKey için aynı doğrulayıcı geçirilmelidir.İki eşleşmiyorsa, şifre çözme başarısız olur.Bu değer, şifrelenmiş olduğundan taşındı gösterir.Kimlik doğrulayıcı olarak benzersiz ve değişmeyen bir değer içeren sütun kullanmanız önerilir.Kimlik değeri, veri erişimi kaybedebilirsiniz.

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

Important noteImportant Note:

KullanarakSQL Serverşifreleme işlevleri ile birlikteANSI_PADDING OFFayar nedeniyle veri kaybına neden Örtük dönüştürmeler.ANSI_PADDING, daha fazla bilgi için bkz:küme ANSI_PADDING (Transact-SQL).

Örnekler

Aşağıdaki örneklerde gösterildiği işlevselliğini kullanır anahtarları ve sertifikaları oluşturulanNasıl: Şifreleme sütun veri.

C.Bir dize bir simetrik anahtar şifreleme

Aşağıdaki örnek, bir sütun eklerEmployeeTablo ve daha sonra sosyal güvenlik numarasını sütunda depolanan değeri şifreler.NationalIDNumber.

USE AdventureWorks;
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.Bir kaydı ile birlikte bir kimlik değeri şifreleme

USE AdventureWorks;

-- 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