MS SQL VERİTABANINDA STRING ŞİFRELEME(HASHBYTES)
Ms SQL veritabanında string şifreleme için HASHBYTES komutu kullanabiliriz.
HASHBYTES ( '<algorithm>', { @input | 'input' } ) <algorithm>::= MD2 | MD4 | MD5 | SHA | SHA1 | SHA2_256 | SHA2_512
Komutta kullanabilecğeimiz şifreleme algoritmaları yukardaki gibidir.
En çok kullanılan şifrelem yöntemi md5 ve SHA2_256 VE SHA2_512 dir.
SQL Server 2016 (13.x) ile başlayarak, SHA2_256 ve SHA2_512 dışındaki tüm algoritmalar kullanımdan kaldırılmıştır.
En basit kullanımı
DECLARE @pasword nvarchar(32);
SET @pasword=N'vedat';
SET @pasword_MD5=HASHBYTES('MD5', @pasword);
SELECT @pasword_MD5;
Eğer veritabanında bu şifreyi kullanacaksak ise;
SELECT * FROM test1 WHERE pasword_SHA2_512=HASHBYTES('SHA2_512','1245');
Sha2_512 ye göre şifrelenmiş '12345' ifadesi kayıtlı mı diye bulmak için
Aşağıdaki kodla table oluşturup deneme yapabilirsiniz.
USE [DENEME]
GO
/****** Object: Table [dbo].[Test1] Script Date: 28.08.2019 17:37:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Test1](
[pasword] [nvarchar](100) NULL,
[pasword_SHA2_256] [nvarchar](100) NULL,
[pasword_SHA2_512] [nvarchar](100) NULL,
[pasword_MD5] [nvarchar](100) NULL
) ON [PRIMARY]
GO
DECLARE @pasword nvarchar(32);
DECLARE @pasword_MD5 nvarchar(32); --8 byte uzunluğunda
DECLARE @pasword_SHA2_256 nvarchar(32); --32 BYTE UZUNLUĞUNDA
DECLARE @pasword_SHA2_512 nvarchar(32); --16 BYTE UZUNLUĞUNDA
SET @pasword=N'vedat';
SET @pasword_MD5=HASHBYTES('MD5', @pasword);
SELECT @pasword_MD5;
SELECT LEN(@pasword_MD5) ;
SET @pasword=N'vedat';
SET @pasword_SHA2_256=HASHBYTES('SHA2_256', @pasword);
SELECT @pasword_SHA2_256;
SELECT LEN(@pasword_SHA2_256);
SET @pasword=N'vedat';
SET @pasword_SHA2_512=HASHBYTES('SHA2_512', @pasword);
SELECT @pasword_SHA2_512;
SELECT LEN(@pasword_SHA2_512);
INSERT into dbo.Test1 (pasword,pasword_MD5,pasword_SHA2_256,pasword_SHA2_512) VALUES (@pasword,@pasword_MD5,@pasword_SHA2_256,@pasword_SHA2_512);
SELECT * FROM TEST1
SELECT * FROM test1 WHERE pasword_SHA2_512=HASHBYTES('SHA2_512',@pasword);
HASHBYTES ( '<algorithm>', { @input | 'input' } ) <algorithm>::= MD2 | MD4 | MD5 | SHA | SHA1 | SHA2_256 | SHA2_512
Komutta kullanabilecğeimiz şifreleme algoritmaları yukardaki gibidir.
En çok kullanılan şifrelem yöntemi md5 ve SHA2_256 VE SHA2_512 dir.
SQL Server 2016 (13.x) ile başlayarak, SHA2_256 ve SHA2_512 dışındaki tüm algoritmalar kullanımdan kaldırılmıştır.
En basit kullanımı
DECLARE @pasword nvarchar(32);
SET @pasword=N'vedat';
SET @pasword_MD5=HASHBYTES('MD5', @pasword);
SELECT @pasword_MD5;
Eğer veritabanında bu şifreyi kullanacaksak ise;
SELECT * FROM test1 WHERE pasword_SHA2_512=HASHBYTES('SHA2_512','1245');
Sha2_512 ye göre şifrelenmiş '12345' ifadesi kayıtlı mı diye bulmak için
Aşağıdaki kodla table oluşturup deneme yapabilirsiniz.
USE [DENEME]
GO
/****** Object: Table [dbo].[Test1] Script Date: 28.08.2019 17:37:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Test1](
[pasword] [nvarchar](100) NULL,
[pasword_SHA2_256] [nvarchar](100) NULL,
[pasword_SHA2_512] [nvarchar](100) NULL,
[pasword_MD5] [nvarchar](100) NULL
) ON [PRIMARY]
GO
DECLARE @pasword nvarchar(32);
DECLARE @pasword_MD5 nvarchar(32); --8 byte uzunluğunda
DECLARE @pasword_SHA2_256 nvarchar(32); --32 BYTE UZUNLUĞUNDA
DECLARE @pasword_SHA2_512 nvarchar(32); --16 BYTE UZUNLUĞUNDA
SET @pasword=N'vedat';
SET @pasword_MD5=HASHBYTES('MD5', @pasword);
SELECT @pasword_MD5;
SELECT LEN(@pasword_MD5) ;
SET @pasword=N'vedat';
SET @pasword_SHA2_256=HASHBYTES('SHA2_256', @pasword);
SELECT @pasword_SHA2_256;
SELECT LEN(@pasword_SHA2_256);
SET @pasword=N'vedat';
SET @pasword_SHA2_512=HASHBYTES('SHA2_512', @pasword);
SELECT @pasword_SHA2_512;
SELECT LEN(@pasword_SHA2_512);
INSERT into dbo.Test1 (pasword,pasword_MD5,pasword_SHA2_256,pasword_SHA2_512) VALUES (@pasword,@pasword_MD5,@pasword_SHA2_256,@pasword_SHA2_512);
SELECT * FROM TEST1
SELECT * FROM test1 WHERE pasword_SHA2_512=HASHBYTES('SHA2_512',@pasword);
Hiç yorum yok