- [VB.NET] Hướng dẫn giải captcha sử dụng dịch vụ AZCaptcha API trên winform
- [C#] Hướng dẫn chứng thực đăng nhập ứng dụng bằng vân tay (Finger Print) trên máy tính
- [C#] Color Thief cách xuất màu sắc thiết kế từ hình ảnh
- [C#] Cách tạo bản quyền và cho phép dùng thử ứng dụng Winform
- [C#] Hướng dẫn sử dụng trình duyệt web Chrome convert HTML sang tập tin file PDF
- [C#] Kết nôi điện thoại Android, IOS với App Winform via Bluetooth
- [DATABASE] Cách query cộng trừ dồn dần trong Sqlserver
- [C#] Thiết kế ứng dụng Console đẹp với thư viện Spectre.Console
- [C#] Thiết kế ứng dụng Single Instance và đưa ứng dụng lên trước nếu kiểm tra ứng dụng đang chạy
- [C#] Giới thiệu JSON Web Token và cách đọc chuỗi token
- [C#] Cách tăng giảm font chữ tất cả các control trên winform
- [DEVEXPRESS] Tích hợp chức năng Tìm kiếm Search vào CheckedComboboxEdit
- [C#] Gởi email Metting Calendar Reminder kèm nhắc thời gian lịch họp
- [C#] Tìm kiếm xem danh sách từ khóa có tồn tại trong đoạn văn bản hay không
- [C#] Thiết kế giao diện ứng dụng trên Console sử dụng thư viện Terminal.Gui
- [C#] Hướng dẫn tạo mã VietQR Payment API Winform
- [C#] Sử dụng thư viện BenchmarkDotNet đo hiệu năng của hảm Method
- [DEVEXPRESS] Tìm kiếm không dấu tô màu highlight có dấu trên C# Winform
- [C#] Chia sẻ source code tạo hiệu ứng pixel Image trên winform
- [C#] Hướng dẫn kiểm tra số Container hợp lệ hay không
[DATABASE] Hướng dẫn mã hóa và giải mã sử dụng thuật toán AES 256 trên sqlserver
Xin chào các bạn, bài viết này mình sẻ nói về mã hóa dữ liệu và lưu trữ với AES 256 trong cơ sở dữ liệu SQLSERVER.
[DATABASE] Encrypt and Decrypt AES 256 trong sqlserver
Ở bài này, chúng ta sẽ tạo một Table với tên [_EncryptionTest] lưu trữ 2 cột dữ liệu.
- Cột dữ liệu chưa mã hóa
- Cột dữ liệu đã mã hóa với Key
Bắt đầu, các bạn thực hiện thao tác từng bước nhé.
Bước 1: Tạo key SYMMETRIC KEY
với tên SK01 (Tên bạn đặt tùy ý nhé)
CREATE SYMMETRIC KEY SK01
WITH ALGORITHM = AES_256
ENCRYPTION BY PASSWORD = '#laptrinhvb.net_123456@';
GO
Ở lệnh trên mình đang sử dụng là AES_256 các bạn có thể thay đổi tùy ý nhé, và mật khẩu key phải bắt buộc là một chuỗi phức tạp.
Bước 2: Chúng ta sẽ tạo 1 bảng table [_EncryptionTest]
để lưu trữ thông tin
CREATE TABLE [dbo].[_EncryptionTest]
(
[OriginalValue] [NVARCHAR](MAX) NULL,
[Encryptedvalue] [VARBINARY](MAX) NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY];
Với OriginalValue: là dữ liệu text chưa mã hóa
và [Encryptedvalue]: là chuỗi kiểu dữ liệu đã được mã hóa với key ở trên
Bước 3: Chúng ta sẽ tạo một Procedure với tên _usp_EncryptionTest
để insert dữ liệu vào table chúng ta vừa tạo
CREATE PROCEDURE [dbo].[_usp_EncryptionTest]
@InputString NVARCHAR(MAX),
@InputString2 NVARCHAR(MAX)
AS
BEGIN
SET NOCOUNT ON;
OPEN SYMMETRIC KEY SK01
DECRYPTION BY PASSWORD = '#laptrinhvb.net_123456@';
INSERT INTO _EncryptionTest
(
OriginalValue,
Encryptedvalue
)
VALUES
(@InputString, ENCRYPTBYKEY(KEY_GUID('SK01'), CONVERT(VARBINARY(MAX), @InputString2)));
CLOSE SYMMETRIC KEY SK01;
END;
Bước 4: Chúng ta insert dữ liệu test vào thử
EXEC _usp_EncryptionTest N'Mã hóa thuật toán AES 256 SQLSERVER - laptrinhvb.net',
N'Mã hóa thuật toán AES 256 SQLSERVER - laptrinhvb.net';
Kết quả khi insert chúng ta sẽ có bảng dữ liệu như hình bên dưới.
Bước 5: Truy vấn dữ liệu
- Khi truy vấn dữ liệu chúng ta select và không truyền Key vào kết quả sẽ được như hình bên dưới.
SELECT [OriginalValue],
CONVERT(NVARCHAR(MAX), DECRYPTBYKEY([Encryptedvalue])), [Encryptedvalue]
FROM _EncryptionTest;
Kết quả:
Nếu chúng ta thực hiện truy vấn truyền Key vào chúng ta sẽ xem được kết quả dữ liệu mà chúng ta đã mã hóa.
OPEN SYMMETRIC KEY SK01
DECRYPTION BY PASSWORD = '#laptrinhvb.net_123456@';
SELECT [OriginalValue],
CONVERT(NVARCHAR(MAX), DECRYPTBYKEY([Encryptedvalue])), [Encryptedvalue]
FROM _EncryptionTest;
CLOSE SYMMETRIC KEY SK01;
Thanks for watching!