NEWS

[DATABASE] Hướng dẫn mã hóa và giải mã sử dụng thuật toán AES 256 trên sqlserver

[DATABASE] Hướng dẫn mã hóa và giải mã sử dụng thuật toán AES 256 trên sqlserver
Đăng bởi: Thảo Meo - Lượt xem: 6007 11:45:29, 29/07/2022C#   In bài viết

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.

  1. Cột dữ liệu chưa mã hóa
  2. Cột dữ liệu đã mã hóa với Key

aes_sql

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.

mahoa_sql

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.

encrypt_data_sql

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ả:

aes_sql_query

 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;

key_aes_sql_query

Thanks for watching!

THÔNG TIN TÁC GIẢ

BÀI VIẾT LIÊN QUAN

[DATABASE] Hướng dẫn mã hóa và giải mã sử dụng thuật toán AES 256 trên sqlserver
Đăng bởi: Thảo Meo - Lượt xem: 6007 11:45:29, 29/07/2022C#   In bài viết

CÁC BÀI CÙNG CHỦ ĐỀ

Đọc tiếp
.