"EncryptByPassPhrase" kullanarak Şifreler Nasıl Şifrelenir?

Şifreleri bir veritabanında saklamak popüler bir uygulama olsa da, genellikle bunları doğru şekilde saklamak pek yaygın değildir. Veritabanında bir parolayı sakladığınızda bunu nasıl yapacağınızla ilgili üç seçeneğiniz vardır. Şifrenizi şu şekilde kaydedebilirsiniz:

Genellikle, çeşitli nedenlerle şifrelenmiş değerlerimizin şifresini çözmemiz gerekir. Bu nedenle, 2. seçenek olan "Şifresi çözülebilen şifrelenmiş metin" genellikle bu amaçla izlenir.

Bu yazıda nasıl yapılacağını tartışacağız. Şifreli ve şifresini çözmek metin, bunu yaparken hangi hataların ortaya çıktığı ve izlenecek önerilen yol nedir.

Şifresi çözülebilen şifreli metin:

Herkes parolanın ne olduğunu anlar, daha az kişi parolalara aşinadır. Parola, nispeten daha güvenlidir. "Entropi", bilgi teknolojisi teorisinde bir şifrenin tuttuğu rastgelelik miktarına atıfta bulunan bir kavramdır. Genellikle, bir parola ne kadar fazla rastgelelik içeriyorsa, parolayı bilgisayar korsanları tarafından kırmak o kadar zor olur. Daha uzun şifrelerin tercih edilmesinin nedeni budur, çünkü muhtemelen daha fazla "rastgele". Parolaya sözcükler ekleyerek entropi artırılabilir. İçinde SQL Server 2008 ve yukarıda "ENCRYPTBYPASSPHRASE" işlevi, parola şifrelemesini destekler. "Biraz dondurma isterim" boşlukları desteklemeyen şifreler yerine şifreniz olarak kullanılır. Dahası, daha güvenli şifrenizi şifreleyebilir.

"ENCRYPTBYPASSPHRASE" işlevi herhangi bir dizeyi şifrelememize izin verir veya DEĞİŞKEN kadar değer 7975 bayt. İki parametreye ihtiyacı var, @passphrase, ve @hayalhanemve türün şifrelenmiş değerlerini içeren bir değer döndürür DEĞİŞKEN (8000).

Şunu kullanarak parola bilgilerini şifreleyin:128 anahtar bit uzunluğu ÜÇLÜ DES algoritması. Parola, boşluk içeren bir paroladır. Parola kullanmanın yararı, önemli bir cümleyi veya tümceciği hatırlamanın, nispeten uzun bir karakter dizisini hatırlamaktan daha basit olmasıdır.

ENCRYPTBYPASSPHRASE:

"ENCRYPTBYPASSPHRASE", SQL Server veri sütunlarını şifrelemek için hızlı ve kolay bir yol sunar. Bu işlev şurada mevcuttur: SQL Server 2008 ve yukarı.

Sözdizimi:

EncryptByPassPhrase (@passphrase, @cleartext)

Argümanlar:

@passphrase:

Bir paroladan asimetrik bir anahtar oluşturulur. Bu, varchar, char, varchar, binary, DEĞİŞKEN, veya NCHAR simetrik anahtarın üretileceği bir parola içeren tür değişkeni. DATE gibi diğer herhangi bir veri türü, bir doğum tarihini şifrelemek için önce açıkça bir ikili değere dönüştürmeniz gerekir.

@cleartext:

Bir NVARCHAR, kömür, Varchar, ikili, DEĞİŞKEN, veya NCHAR düz metni içeren tip değişkeni. maksimum boyut sekiz bin bayt.

Dönüş Türleri:

VARBİNER ile 8,000 bayt en büyük boy.

Uygulama:

TABLO OLUŞTUR dbo.encrypted_data ([Id] INT IDENTITY (1,1) PRIMARY KEY, [password] VARBINARY (8000));

Kimlik değeri şifrelenmemiş olarak kalırken, şifre sütunu tiptedir DEĞİŞKEN (8000), dönüş türüyle eşleşen ENCRYPTBYPASSPHRASE işlev.

INSERT INTO dbo.encrypted_data ([password]) VALUES (ENCRYPTBYPASSPHRASE ('SQL SERVER 2017', 'Bu benim kredi kartı numaram!'));

İlk parametrenin simetrik bir anahtar sağlayan parola olduğu görülmüştür. İkincisi ise metin değerinin şifrelenmesi gerekiyor.

encrypted_data'dan * seçin

Sonuç kümesi gibi görünecek.

Bu SELECT ifadesi bir değeri döndürürDEĞİŞKENgibi:

"0x0100000078F5CB03AC1B86BC26D82F51E0296B6B96D9F19F16D74BE2118AFFC4FE63390D5B99F11E62890AA8A53F6EF510AF6F4D"

Unutulmamalıdır ki, DEĞİŞKEN döndürülen değer ENCRYPTBYPASSPHRASE dır-dir kararsız. Bu, aynı girdiyle bile her seferinde aynı sonucu üretmeyeceği anlamına gelir. Yani aynı SELECT deyimini iki kez çalıştırırsak, iki farklı çıktı elde edebiliriz.

ENCRYPTBYPASSPHRASE'i SEÇİN ('SQL SUNUCUSU 2017', 'Bu benim kredi kartı numaram!'); ENCRYPTBYPASSPHRASE'i SEÇİN ('SQL SUNUCUSU 2017', 'Bu benim kredi kartı numaram!'); ENCRYPTBYPASSPHRASE'i SEÇİN ('SQL SUNUCUSU 2017', 'Bu benim kredi kartı numaram!');

Select ifadesi şu şekilde ortaya çıkacaktır:

"0x010000002D69EDEEA6B486FAF38FB353CF2682EE30B450488109BD0E23B88E03CD48F72673C6A462B210D6CE38E00E9F8BA18AB7" ilk seçim ifadesi için.

"0x010000007C5736E4B0F15D971D771D2D146924F741D2DB04477C882A6BAF65703F01D950B1AD01E7E4E27E89243F6A4F549170E2" ikinci ifade için.

"0x010000009B49BEBAB4B5E510C0C2998604A005617398631C2EBFB0E3C08DDF27C2A06F447FC11BD10B416C7E58038109EBD52021" üçüncü ifade için.

DECRYPTBYPASSPHRASE:

Parolamız şifrelenmiş olduğu için şimdi şifresini çözebilmeliyiz. Bu, özelliği kullanarak kolayca yapılır DECRYPTBYPASSPHRASE Parolamızı şifrelediğimiz aynı parola ile.

Aşağıdaki kodu yürütün. Ve bunun gibi bir çıktı olarak bazı uzun alfasayısal karakterlerin olduğu şifreyi alacaksınız.

"0x0100000078F5CB03AC1B86BC26D82F51E0296B6B96D9F19F16D74BE2118AFFC4FE63390D5B99F11E62890AA8A53F6EF510AF6F4D"

encrypted_data'dan şifre olarak ID, DECRYPTBYPASSPHRASE ('SQL SERVER 2017', şifre) seçin

Bu bir şifre değil. Sevmek ENCRYPTBYPASSPHRASE, DECRYPTBYPASSPHRASE döndürür DEĞİŞKEN işlevsel bir dizeye kodlanacak değer. SELECT deyimimize bir CONVERT veya cast işlevi ekleyerek, bu kolayca yapılabilir.

Facebook Twitter Google Plus Pinterest