Hash algoritmaları nasıl yazılır

ForensicHack

Yeni üye
24 Haz 2016
20
0
Arkadaşlar basit olarak sizlere hash algoritması nasıl yazılır göstereceğim
1. Hash Algoritmamız : Quadratic Probing



Yani biz aslında algoritmayı her türlü şekillendirebiliriz. bu sizin şifreleme mantığınıza kalmış durum.
kısaca Quadratic Probing hash algoritmasının amacı şifrelenmiş karakterin hash tablosunda kendisine nasıl yer bulacağıdır. mantığımız ise ;
En çok kullanılan fonksiyon
t = h(t)
f(x) = t + x^2
Yeni pozisyon için sırasıyla (t+1^2), (t+2^2), ..., (t+n^2) değerlerine karşılık gelen pozisyonlara bakılır ve ilk boş olana yerleştirilir.

örneğin : 15 16 ve 30 sayısını hash dizisinde mod 15 göre şifreleyip yerlestirelim. dizi boyutu ise 5 olsun....
15 % 15 = 0 oldu.
16 % 15 = 1 oldu.
30 % 15 = 0 oldu.
cıkan sonuclar bizim dizimizdeki indisimizi verir.
indis = 1 ' e 16 sayısı ile doldurulur.
yani tablomuz bu hali alır.
0 16 0 0 0
pekala 15 ve 30 un indisleri aynı o zamanda herhangi birini 0 . indise yerleştiriyoruz.(ben 15 i yerleştirdm) ve tablomuzun yeni hali :
15 16 0 0 0
sıra geldi 30 sayısına indisi 0 ve bir sonraki indisi bakılır dolumu diye oda :
0 + 1^2 = 1 ve maalesef 1. indisimiz 16 sayısı ile dolu şimdi ise bir sonraki indise bakılır yani 2.indise :
0 + 2^2 = 4 ;
4.indis boş ve 30 sayımızı buraya yerleştiriyoruz. Yeni HASH TABLOMUZ ise böyle oldu.
15 16 0 0 30
YANİ ARKADAŞLAR MANTIK BÖYLEDİR.
UMARIM ANLATABİLMİŞTİRİM.:RpS_thumbsup:
KODU İSE AŞAĞI TARAFTA PAYLAŞAĞIM.
#include <stdio.h>
#include <stdlib.h>
#include <Math.h>


int hash(int c){
int a ;


a = c%15 ;

return a ;


}



int yerlestirilmis_dizi[15] ;

**** yerlestir (int yenisayi)
{
int ys = hash(yenisayi);

yerlestirilmis_dizi[2] = 47 ;

yerlestirilmis_dizi[5] = 35 ;

yerlestirilmis_dizi[6] = 36 ;

yerlestirilmis_dizi[9] = 129 ;

yerlestirilmis_dizi[10] = 25 ;

yerlestirilmis_dizi[11] = 2501 ;

yerlestirilmis_dizi[14] = 65 ;
int kontrol = 0 ;


for(int k=0 ; k<15 ; k++)

{


if(yerlestirilmis_dizi[(kontrol+ys)%15]=='\0'){


yerlestirilmis_dizi[(kontrol+ys)%15] = yenisayi;

break;

}

kontrol = pow(k,2) ;

}
for(int i=0 ; i<15 ; i++){
printf("%d ",yerlestirilmis_dizi) ;
}


}




main(){
int sayi;
for(int i=0 ; i<5 ; i++){
printf("Hash Algoritmsina sayi gir") ;
scanf("%d",&sayi) ;
yerlestir(sayi) ;
}





}
 

byteview

Katılımcı Üye
20 Ağu 2016
795
0
Yararli bi konu
Simdi biz bi string i decode ve encode edebilirmiyiz
yoksa sadece decode
 

ForensicHack

Yeni üye
24 Haz 2016
20
0
tabiki burda encoder ettik. ayrıca anahatar ı yani kodlama hash mantıgını çözzer isek burda decoder de münkündür
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.