Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 7

1.

Mã Hóa HASH

Sau Khi Mã Hoá Mật Khẩu

Cài Đặt Insert mã hoá dữ liệu

Create database QLSV


Use QLSV
CREATE TABLE SinhVien (MASV nvarchar(20) primary key not null,
HOTEN nvarchar(100) not null, NGAYSINH Datetime, DIACHI nvarchar(200),
MALOP varchar(20), TENDN nvarchar(100) not null, MATKHAU varchar(100) not
null )

INSERT INTO
SinhVien(MASV,HOTEN,NGAYSINH,DIACHI,MALOP,TENDN,MATKHAU)
VALUES
('M001',N'Nguyễn Phúc Nguyên','2002-03-09', N'Quảng Bình',
'46K22.2','superfaker12','phucnguyen93'),
('M002',N'Hoàng Thị Uyển Nhi','2002-10-08', N'Quảng Bình',
'46K22.2','uyennhi08','uyennhi8'),
('M003',N'Nguyễn Đại Vũ','2002-10-05', N'Đà Nẵng',
'46K22.2','daivu08','vunguyen1')
--
Update SinhVien SET MATKHAU= CONVERT(varchar(50),
HASHBYTES('SHA2_256', MatKhau),1)
select* from SinhVien
---- Tự động mã hoá khi insert
Create Trigger Trig_Insert_MK on SinhVien
For Insert AS
Begin
UPDATE SinhVien
Set MATKHAU = (Select Convert(varchar(100), HASHBYTES('SHA2_256',
i.MATKHAU),1) From inserted i)
Where MASV = (Select i.MASV from inserted i)
END
--Thêm dữ liệu vào bảng
Insert into SinhVien values ('M004',N'Nguyễn Ngô Thượng','2002-8-26',N'Nam
Định','46k22.2','thuong04','thuongnguyen04')
select* from SinhVien
--Tự động mã hoá khi update
Create Trigger Trig_Update_MK on SinhVien
For Update AS
Begin
If Update (MATKHAU)
Begin
Update SinhVien
Set MATKHAU = (Select Convert(varchar(50),
HASHBYTES('SHA2_256', i.MATKHAU),1) From inserted i)
Where MASV = (Select i.MASV from inserted i)
END
END
-- Update dữ liệu
Select * from SinhVien
Where TENDN = 'superfaker12' and MATKHAU = CONVERT(varchar(50),
HASHBYTES('SHA2_256','nguyen'),1)

Ví Dụ về mã Hoá HASH

--MA HOA MOT CHIEU (HASH)

SELECT HASHBYTES('MD5','ATVBMTT') AS ENCRYPTED_STRING_1


SELECT HASHBYTES('MD5','ATVBMTT') AS ENCRYPTED_STRING_1
--
SELECT HASHBYTES('SHA1', CAST(250 AS CHAR)) AS
ENCRYPTED_NUMBER_1
SELECT HASHBYTES('SHA1', CAST(250 AS VARCHAR)) AS
ENCRYPTED_NUMBER_2
SELECT HASHBYTES('SHA1', CAST(250 AS NVARCHAR)) AS
ENCRYPTED_NUMBER_3

2. Mã Hoá SALT
Ví dụ về Salt

DECLARE @Mysecret varchar(20) = 'ChanQuaDi'


DECLARE @MySalt varchar(100) = Convert(varchar(100),
CRYPT_GEN_RANDOM(8),1)
Select @Mysecret + @MySalt, HASHBYTES('SHA1', @Mysecret+ @MySalt)
Mã Hoá trên cột của table

Alter table SinhVien ADD Salt varchar(100)


Update SinhVien Set Salt =
CONVERT(varchar(100),CRYPT_GEN_RANDOM(8),1)
Select * from SinhVien

3. Mã hóa đối xứng


3.1 Mã hóa đối xứng bằng passphrase

--passphrase kiểu nhị phân (ở dạng số hex)


declare @encrypted VARBINARY(128)
Set @encrypted = ENCRYPTBYPASSPHRASE ('Ma Hoa' , 'My secret')
Select @encrypted AS encrypted, CONVERT(varchar,
DECRYPTBYPASSPHRASE('Ma Hoa', @encrypted)) AS decryted
--passphrase kiểu nhị phân (ở dạng số hex)
declare @encrypted VARBINARY(128)
Set @encrypted = ENCRYPTBYPASSPHRASE (0x123456789, 'My secret')
Select @encrypted AS encrypted, CONVERT(varchar,
DECRYPTBYPASSPHRASE(0x123456789, @encrypted)) AS decryted

3.2 Tạo khóa đối xứng mã hóa bằng mật khẩu (SYMMETRIC KEY)

CREATE SYMMETRIC KEY MySymKey


WITH ALGORITHM = AES_256
ENCRYPTION BY PASSWORD = 'p@sswOrdfOr$ymKey'
--Mở khóa
OPEN SYMMETRIC KEY MySymKey
DECRYPTION BY PASSWORD = 'p@sswOrdfOr$ymKey'
--Mã hóa
DECLARE @encrypted VARBINARY(8000)
DECLARE @string NVARCHAR(50) = N'An toàn và bảo mật'
SET @encrypted = EncryptByKey(Key_GUID('MySymKey'), @string)
--Giải mã
DECLARE @decrypted NVARCHAR(50)
SET @decrypted = CONVERT(NVARCHAR, DecryptByKey(@encrypted))
--Đóng khóa
CLOSE SYMMETRIC KEY MySymKey

3.3 Tạo khóa bất đối xứng mã hóa bằng mật khẩu

CREATE ASYMMETRIC KEY MyAKey


WITH ALGORITHM = RSA_2048
ENCRYPTION BY PASSWORD = 'myp@sswOrdfOrA$ymKey'
--Mã hóa
DECLARE @encrypted VARBINARY(8000)
DECLARE @string NVARCHAR(50) = N'An toàn và bảo mật'
SELECT @encrypted=
EncryptByASymKey(AsymKey_ID('MyAKey'), @string)
--Giải mã
DECLARE @decrypted NVARCHAR(50)
SELECT @decrypted = CONVERT(NVARCHAR,
DecryptByASymKey(AsymKey_ID('MyAKey'),@encrypted,N'myp@sswOrdfOr
A$ymKey'))

3.4 Mã Hóa bất đối xứng bằng chứng chỉ

CREATE CERTIFICATE MyCert1


ENCRYPTION BY PASSWORD = 'p@sswOrdfOrCert1'
WITH SUBJECT = 'Certificate for demo',
START_DATE = '2022-10-09', EXPIRY_DATE = '2022-12-28'
--Mã hóa
DECLARE @encrypted VARBINARY(8000)
DECLARE @string NVARCHAR(50) = N'An toàn và bảo mật'
SELECT @encrypted = EncryptByCert(Cert_ID('MyCert1'), @string)
--Giải mã
DECLARE @decrypted NVARCHAR(50)
SELECT @decrypted = CONVERT(NVARCHAR,
DecryptByCert(Cert_ID('MyCert1'), @encrypted, N'p@sswOrdfOrCert1'))

You might also like