Maison > Article > base de données > Comment chiffrer une table en SQL
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.
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.
(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
(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
(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
(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
(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
(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
(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
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!