Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
SQL-adatbázis a Microsoft Fabricben
Szimmetrikus kulccsal titkosítja az adatokat.
Transact-SQL szintaxis konvenciók
Megjegyzés:
Ezt a szintaxist az Azure Synapse Analytics kiszolgáló nélküli SQL-készlete nem támogatja.
Szemantika
EncryptByKey ( key_GUID , { 'cleartext' | @cleartext }
[, { add_authenticator | @add_authenticator }
, { authenticator | @authenticator } ] )
Érvek
key_GUID
A cleartext titkosításához használandó kulcs GUID azonosítója.
uniqueidentifier.
"cleartext"
A kulccsal titkosítandó adatok.
@cleartext
Nvarchar, char, varchar, bináris, varbinary vagy nchar típusú változó, amely a kulccsal titkosítandó adatokat tartalmazza.
add_authenticator
Azt jelzi, hogy a hitelesítő titkosítva lesz-e a cleartextdel együtt. Hitelesítő használata esetén 1-nek kell lennie.
int.
@add_authenticator
Azt jelzi, hogy a hitelesítő titkosítva lesz-e a cleartextdel együtt. Hitelesítő használata esetén 1-nek kell lennie.
int.
Hitelesítő
Az az adat, amelyből hitelesítőt kell származtatnia.
sysname.
@authenticator
Olyan változó, amely olyan adatokat tartalmaz, amelyekből a hitelesítőt le kell származtatnia.
Visszatérési típusok
varbinary legfeljebb 8000 bájt mérettel.
Null értéket ad vissza, ha a kulcs nincs megnyitva, ha a kulcs nem létezik, vagy ha a kulcs elavult RC4-kulcs, és az adatbázis nem kompatibilis a 110-es vagy újabb kompatibilitási szinttel.
Null értéket ad vissza, ha a cleartext értéke NULL.
Megjegyzések
A EncryptByKey szimmetrikus kulcsot használ. Ennek a kulcsnak nyitva kell lennie. Ha a szimmetrikus kulcs már meg van nyitva az aktuális munkamenetben, akkor nem kell újra megnyitnia a lekérdezés kontextusában.
A hitelesítő segít elrettenteni a titkosított mezők teljes értékű helyettesítését. Vegyük például a bérszámfejtési adatok alábbi táblázatát.
| Employee_ID | Standard_Title | Base_Pay |
|---|---|---|
| 345 | Szobai asszisztens másolása | Fskj%7^edhn00 |
| 697 | Pénzügyi igazgató | M0x8900f56543 |
| 694 | Adatbeviteli felügyelő | Cvc97824%^34f |
A titkosítás feltörése nélkül a rosszindulatú felhasználók jelentős információkat tudnak kikövetkeztetni abból a környezetből, amelyben a rejtjelszöveget tárolják. Mivel egy pénzügyi igazgatónak többet kell fizetnie, mint egy copy room assistant, ebből következően az M0x8900f56543 kódolt értéknek nagyobbnak kell lennie, mint az Fskj%7^edhn00. Ha igen, a táblán alter engedéllyel rendelkező felhasználók emelést adhatnak a Szoba másolása segédnek úgy, hogy a Base_Pay mezőben lévő adatokat a pénzügyi igazgató Base_Pay mezőjében tárolt adatok másolatára cserélik. Ez a teljes értékű helyettesítési támadás teljes egészében áthalad a titkosításon.
A teljes értékű helyettesítési támadásokat úgy lehet meghiúsítani, hogy környezetfüggő információkat ad hozzá az egyszerű szöveghez a titkosítás előtt. Ez a környezeti információ annak ellenőrzésére szolgál, hogy a egyszerű szöveges adatok nem lettek-e áthelyezve.
Ha az adatok titkosításakor hitelesítő paramétert ad meg, ugyanaz a hitelesítő szükséges az adatok visszafejtéséhez a DecryptByKey használatával. Titkosításkor a hitelesítő kivonata a egyszerű szöveggel együtt lesz titkosítva. A visszafejtési időben ugyanazt a hitelesítőt kell átadni a DecryptByKey-nek. Ha a kettő nem egyezik, a visszafejtés sikertelen lesz. Ez azt jelzi, hogy az érték a titkosítás óta át lett helyezve. Javasoljuk, hogy egy egyedi és változatlan értéket tartalmazó oszlopot használjon hitelesítőként. Ha a hitelesítő értéke megváltozik, előfordulhat, hogy elveszíti az adatokhoz való hozzáférést.
A szimmetrikus titkosítás és visszafejtés viszonylag gyors, és alkalmas nagy mennyiségű adat kezeléséhez.
Fontos
Ha az SQL Server titkosítási függvényeit a ANSI_PADDING KI beállítással együtt használja, az implicit konverziók miatt adatvesztést okozhat. A ANSI_PADDING további információ: SET ANSI_PADDING (Transact-SQL).
Példák
Az alábbi példákban bemutatott funkciók a How To: Encrypt a Column of Data (Adatoszlop titkosítása) című témakörben létrehozott kulcsokra és tanúsítványokra támaszkodnak.
Egy. Sztring titkosítása szimmetrikus kulccsal
Az alábbi példa egy oszlopot ad hozzá a Employee táblához, majd titkosítja az oszlopban NationalIDNumbertárolt társadalombiztosítási szám értékét.
USE AdventureWorks2022;
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. Rekord titkosítása hitelesítési értékkel együtt
USE AdventureWorks2022;
-- 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
Lásd még:
DECRYPTBYKEY (Transact-SQL)
SZIMMETRIKUS KULCS LÉTREHOZÁSA (Transact-SQL)
ALTER SZIMMETRIKUS KULCS (Transact-SQL)
SZIMMETRIKUS BILLENTYŰ (Transact-SQL)
titkosítási hierarchia
HASHBYTES (Transact-SQL)