Maison  >  Article  >  base de données  >  Comment chiffrer une table en SQL

Comment chiffrer une table en SQL

清浅
清浅original
2019-05-11 13:08:594587parcourir

Comment chiffrer les tables SQL : testez d'abord l'environnement ; puis créez la clé principale de la base de données ; puis créez le certificat et une clé secrète symétrique et enfin chiffrez les données.

Comment chiffrer une table en SQL

SQL Server Comment configurer le chiffrement des tables

SQL Server prend en charge le chiffrement au niveau de la base de données (TDE) et des colonnes -niveau de chiffrement Le chiffrement des données, le chiffrement au niveau de la base de données est effectué dans la base de données, ce qui est transparent pour le programme, et aucune opération supplémentaire n'est requise pendant le processus de développement. Comparé au cryptage au niveau de la base de données, le processus de cryptage des données au niveau des colonnes est un peu gênant et le programme doit effectuer quelques opérations supplémentaires. La figure suivante est la hiérarchie de chiffrement de SQL Server.On voit que le chiffrement de SQL Server est hiérarchique.Le chiffrement du niveau supérieur protège le chiffrement de ses sous-niveaux.Cet article explique une méthode utilisant les quatre niveaux de ①②③④. dans la figure pour crypter/déchiffrer le processus de données.

Comment chiffrer une table en SQL

(1) Description de l'environnement de test

Testez à l'aide de SQL Server 2012 R2 et créez la table de données suivante :

--Créer une table utilisateur pour tester

CREATE TABLE TBLUser 
(    
    Name             nvarchar(30),     
    Password         varbinary(1000),    
)
GO

Comment chiffrer une table en SQL

(2) Créer une clé principale de base de données

Clé principale de base de données dans Sous la clé principale du service, le cryptage est effectuée par la clé principale de service. Il s'agit d'une clé au niveau de la base de données qui peut être utilisée pour fournir un chiffrement lors de la création de certificats au niveau de la base de données ou de clés asymétriques. Chaque base de données ne peut avoir qu'une seule clé principale de base de données, créée via des instructions T-SQL. Le code spécifique est le suivant :

CREATE MASTER KEY ENCRYPTION BY PASSWORD ='passW@ord'
GO

Image 025.png

(3) Créer un certificat

Créer un certificat de clé symétrique pour le chiffrement, le spécifique le code est le suivant :

CREATE CERTIFICATE TestCert with SUBJECT = 'Test Certificate'
GO

Image 026.png

(4) Créer une clé secrète symétrique

Comme le montre le cryptage SQL Server hiérarchie, clés symétriques Il peut être créé par mot de passe ou d'autres clés symétriques, clés asymétriques et certificats. Cet article utilise un certificat pour créer une clé secrète symétrique à des fins de test. Le code spécifique est le suivant :

CREATE SYMMETRIC KEY TestSymmetric WITH ALGORITHM = AES_256
 ENCRYPTION BY CERTIFICATE TestCert 
GO

Image 027.png

(5) Données cryptées

Ouvrez d'abord la clé secrète symétrique du certificat, puis utilisez la fonction ENCRYPTBYKEY pour crypter les données, puis fermez la clé secrète symétrique. Le code spécifique est le suivant :

OPEN SYMMETRIC KEY TestSymmetric DECRYPTION BY CERTIFICATE TestCert;
INSERT INTO TBLUser values('张三', ENCRYPTBYKEY(Key_Guid(N'TestSymmetric'), '123456'));
CLOSE SYMMETRIC KEY TestSymmetric;
GO

Image 028.png

(6) Afficher les données cryptées

Interrogez directement les données cryptées en SQL. J'ai vu que le contenu du mot de passe était une chaîne de caractères hexadécimaux illisibles.

SELECT * FROM TBLUser
GO

Image 029.png

(7) Décrypter les données

Ouvrez d'abord la clé secrète symétrique du certificat, puis utilisez la fonction DecryptByKey pour décrypter les données , et fermez-le après avoir terminé Clé symétrique. Le code spécifique est le suivant :

OPEN SYMMETRIC KEY TestSymmetric DECRYPTION BY CERTIFICATE TestCert;
SELECT Name, CAST(DecryptByKey(password) as varchar(100)) Password FROM TBLUser;
CLOSE SYMMETRIC KEY TestSymmetric;
GO

Image 030.png

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn