Mükemmel dküman hocam... Sanıyorum kendi ataszümü yaptım, kaynak belirterek kullanabilirsiniz. 10.05.2013 tarihli google arama sonucu : Aradığınız - "herşeyin hayırlısı rampanın bayırlısı" - ile ilgili hiçbir arama sonucu mevcut değil. Not : Syleyeni belli olduğu için ataszü değil, zlüsz oluyormuş, dolayısı ile kendi zlüszümü yapmış oldum :)

Sql Server şifreleri saklamak için dkümante edilmemiş bir fonksiyon olan pwdencrypt kullanır. Bu fonksiyon kullanıcı şifresi için bir hash değeri üretir. Buralar genellikle herkesin bildiği şeyler. Ama daha public edilmeyen şey ise bu fonksiyonun ayrıntılarıdır. İşte bu dkümanda bu fonksiyonun detayları ve zayıflıkları hakkında bilgi vereceğim. SQL şifre hash'ı nasıl birşeydir?Query Analyzer ya da Sql aracı kullanarak şu sorguyu sorun;select password from master. dbo. sysxlogins where name='sa'Buna benzer bir şey alacaksınız.0x01008D504D65431D6F8AA7AED333590D7DB1863CBFC98186 BFAE06EB6B327EFA5449E6F649BA954AFF4057056D9BBenim makinamdaki 'sa' şifresinin hash değeri işte yukardakiPeki pwdencrypt fonksiyondan hash'la ilgili ne alacağız?ZamanSorgu;select pwdencrypt Sonuç;0x0100544115053E881CA272490C324ECE22BF17DAF2AB96B1DC9A7EAB644BD218969D09FFB97F5035CF7142521576 Birkaç saniye sonra aynı sorguyu soralım yine;select pwdencrypt Sonuç;0x0100D741861463DFFF7B5282BF4E5925057249C61A696ACB92F532819DC22ED6BE374591FAAF6C38A2EADAA57FDF'foo' girdisi aynı olmasını rağmen iki hash değeri farklı. Buradan anlayacağımız zaman şifre hashlarının yaratılmasında nemli bir yer tutuyor. Bu yapının nedeni iki farklı kullanıcının aynı şifreyi kullanmasının anlaşılmamasını sağlamaktır. Büyük Harf Küçük HarfSorgu;select pwdencrypt Sonuç;0x01008444930543174C59CC918D34B6A12C9CC9EF99C4769F819B43174C59CC918D34B6A12C9CC9EF99C4769F819B Yukardaki hash'ta 2 şifre hash değeri var. Anlamadıysanız bu değeri blelim.0x01008444930543174C59CC918D34B6A12C9CC9EF99C4769F819B43174C59CC918D34B6A12C9CC9EF99C4769F819BSon 40 karakter ondan nceki 40 karakterle aynı. Biri büyük harf için diğeri küçük harf için. Bu Birilerinin işini kolaylaştırıyor. Sadece büyük harfleri denemeleri yeterli oluyor. Salt TemizlemeZamanın hash fonksiyonlarını etkilemesini yazının nceki blümleribde ğrenmiştik. Ama zamanın byle bir etki yapmasını sağlayacak bir şey daha olmalı ve hazırda bulunmalı. Hani yukarıdaki hashi blmüştüm ya işte oradaki 84449305 zamanı etkileyen bilgidir. Bu numara C 'de time fonksitonu ile srand fonksiyonunun birlikte ürettikleri rastgele bir numaradır. Üretilen numaralar integerdir. Sql shorta çevirir. İlk üretilen bu numaraya SN1 diyelim. Sonra tekrar rand fonksiyonu çağrılır ve bir numara daha üretilir ve shorta çevrilir. Buna da SN2 diyelim. SN1:SN2 salt'ı oluşturmuş olur. Şifreyi Hash'a ÇevirmekKullanıcı şifresi eğer UNICODE değilse nce bu forma dndürülür. Salt değeri sona eklenir. Daha sonra advapi32. dll içindeki kripto fonksiyonu ile SHA ya da daha farklı bir hash algoritmasıyla kriptolanır. Şifre büyük harf formuna çevrilir ve salt tekrar eklenir ve başka bir SHA hash üretilir.0x0100 Sabit Başlık84449305 rand 'ın iki defa çağrılmasından oluşan salt değeri43174C59CC918D34B6A12C9CC9EF99C4769F819B Küçük harf SHA Hash43174C59CC918D34B6A12C9CC9EF99C4769F819B Büyük harf SHA HashOnaylama İşlemiİlk nce kullanıcının girdiği şifre alınır ve salt değeri eklenerek SHA hash dnüştürülür ve database ile karşılaştırılr.

Mssql çok karışık ya. yok Query Analyzer yok bilemem ne, yedek almak ayrı bi dert zaten. bu kadar karışık bişeyin bu kadar performans sağlaması ilginç :)ne demişler, ne kadar sade okadar hızlı :) kelimeler albayım bazı anlamlara gelmiyor.