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
Ez a függvény szimmetrikus kulcsot használ az adatok visszafejtéséhez.
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. Az Azure Synapse Analytics dedikált SQL-készletei esetében az eredményhalmaz gyorsítótárazását nem szabad használni DECRYPTBYKEY. Ha ezt a titkosítási függvényt kell használni, győződjön meg arról, hogy az eredménykészlet gyorsítótárazása le van tiltva ( munkamenet- vagy adatbázisszinten) a végrehajtás időpontjában.
Szemantika
DECRYPTBYKEY ( { 'ciphertext' | @ciphertext }
[ , add_authenticator , { authenticator | @authenticator } ] )
Arguments
ciphertext
A kulccsal titkosított adatokat tartalmazó varbináris típusú változó.
@ciphertext
A kulccsal titkosított adatokat tartalmazó varbináris típusú változó.
add_authenticator
Azt jelzi, hogy az eredeti titkosítási folyamat tartalmazott-e és titkosított-e egy hitelesítőt az egyszerű szöveggel együtt. Az adattitkosítási folyamat során meg kell egyeznie a ENCRYPTBYKEY-nek átadott értékkel. add_authenticatorint adattípussal rendelkezik.
Hitelesítő
A hitelesítő létrehozásának alapjaként használt adatok. Meg kell egyeznie a ENCRYPTBYKEY-nek megadott értékkel. A authenticatora sysname.
@authenticator
Olyan változó, amely olyan adatokat tartalmaz, amelyekből egy hitelesítő létrehoz. Meg kell egyeznie a ENCRYPTBYKEY-nek megadott értékkel. @authenticatora sysname.
Visszatérési típusok
varbinary, legfeljebb 8000 bájt mérettel.
DECRYPTBYKEYvisszaadja, ha az adattitkosításhoz NULL használt szimmetrikus kulcs nincs megnyitva, vagy ha a rejtjelszöveg .NULL
Megjegyzések
DECRYPTBYKEY szimmetrikus kulcsot használ. Az adatbázisnak már meg kell nyitnia ezt a szimmetrikus kulcsot.
DECRYPTBYKEY több kulcs egyidejű megnyitását teszi lehetővé. A szöveg visszafejtése előtt nem kell azonnal megnyitnia a kulcsot.
A szimmetrikus titkosítás és visszafejtés általában gyorsan működik, és jól működnek a nagy adatmennyiségeket érintő műveletekhez.
A DECRYPTBYKEY hívásnak a titkosítási kulcsot tartalmazó adatbázis kontextusában kell történnie. Ezt úgy biztosíthatja, hogy az adatbázisban található objektumból (például nézetből, tárolt eljárásból vagy függvényből) hív DECRYPTBYKEY meg.
Permissions
A szimmetrikus kulcsnak már nyitva kell lennie az aktuális munkamenetben. További információ: OPEN SYMMETRIC KEY.
Példák
A. Visszafejtés szimmetrikus kulccsal
Ez a példa szimmetrikus kulccsal fejti vissza a rejtjelszöveget.
-- First, open the symmetric key with which to decrypt the data.
OPEN SYMMETRIC KEY SSN_Key_01 DECRYPTION BY CERTIFICATE HumanResources037;
GO
-- Now list the original ID, the encrypted ID, and the
-- decrypted ciphertext. If the decryption worked, the original
-- and the decrypted ID will match.
SELECT NationalIDNumber,
EncryptedNationalID AS 'Encrypted ID Number',
CONVERT (NVARCHAR, DECRYPTBYKEY(EncryptedNationalID)) AS 'Decrypted ID Number'
FROM HumanResources.Employee;
GO
B. Visszafejtés szimmetrikus kulccsal és hitelesítő kivonattal
Ez a példa az eredetileg titkosított adatokat egy hitelesítővel együtt fejti vissza.
-- First, open the symmetric key with which to decrypt the data
OPEN SYMMETRIC KEY CreditCards_Key11 DECRYPTION BY CERTIFICATE Sales09;
GO
-- Now list the original card number, the encrypted card number,
-- and the decrypted ciphertext. If the decryption worked,
-- the original number will match the decrypted number.
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;
C. Nem sikerült visszafejteni, ha nincs az adatbázis környezetében a kulccsal
Az alábbi példa bemutatja, hogy a DECRYPTBYKEY kulcsot tartalmazó adatbázis kontextusában kell végrehajtani. A sor nem lesz visszafejtve az adatbázisban való végrehajtáskor DECRYPTBYKEYmaster ; az eredmény: NULL.
-- Create the database
CREATE DATABASE TestingDecryptByKey;
GO
USE [TestingDecryptByKey]; -- Create the table and view
CREATE TABLE TestingDecryptByKey.dbo.Test (val VARBINARY (8000) NOT NULL);
GO
CREATE VIEW dbo.TestView AS
SELECT CAST (DECRYPTBYKEY(val) AS VARCHAR (30)) AS DecryptedVal
FROM TestingDecryptByKey.dbo.Test;
GO
-- Create the key, and certificate
USE TestingDecryptByKey;
CREATE MASTER KEY ENCRYPTION BY PASSWORD= 'ItIsreallyLong1AndSecured!Password#';
CREATE CERTIFICATE TestEncryptionCertificate
WITH SUBJECT = 'TestEncryption';
CREATE SYMMETRIC KEY TestEncryptSymmetricKey
WITH ALGORITHM = AES_256, IDENTITY_VALUE = 'It is place for test', KEY_SOURCE = 'It is source for test'
ENCRYPTION BY CERTIFICATE TestEncryptionCertificate;
-- Insert rows into the table
DECLARE @var AS VARBINARY (8000), @Val AS VARCHAR (30);
SELECT @Val = '000-123-4567';
OPEN SYMMETRIC KEY TestEncryptSymmetricKey DECRYPTION BY CERTIFICATE TestEncryptionCertificate;
SELECT @var = EncryptByKey(Key_GUID('TestEncryptSymmetricKey'), @Val);
SELECT CAST (DECRYPTBYKEY(@var) AS VARCHAR (30)),
@Val;
INSERT INTO dbo.Test
VALUES (@var);
GO
-- Switch to master
USE [master];
GO
-- Results show the date inserted
SELECT DecryptedVal
FROM TestingDecryptByKey.dbo.TestView;
-- Results are NULL because we are not in the context of the TestingDecryptByKey Database
SELECT CAST (DECRYPTBYKEY(val) AS VARCHAR (30)) AS DecryptedVal
FROM TestingDecryptByKey.dbo.Test;
GO
-- Clean up resources
USE TestingDecryptByKey;
DROP SYMMETRIC KEY TestEncryptSymmetricKey REMOVE PROVIDER KEY;
DROP CERTIFICATE TestEncryptionCertificate;
USE [master];
DROP DATABASE TestingDecryptByKey;
GO