lostyazilim
tr.link

Algoritma ile oluşturulan kodlar hakkında

8 Mesajlar 4.972 Okunma
acebozum
tr.link

Batuhan Batuhan Kendine webmaster Kullanıcı
  • Üyelik 08.05.2011
  • Yaş/Cinsiyet 28 / E
  • Meslek Öğrenci
  • Konum Ankara
  • Ad Soyad B** B**
  • Mesajlar 3455
  • Beğeniler 783 / 1009
  • Ticaret 1, (%100)
Hepimiz Magnum çubuklarındaki, Cornetto ambalajlarındaki, Fritolay ürünlerinin içinden çıkan kartlardaki yaklaşık 8-10 karakterli kodları biliyoruz. Bu kodlarla internet sitelerinde çekilişlere katılabilir, yada oyunlar oynayabilirdik. Eğer çubuktaki kodları düzgün ve tam doğru bir şekilde girmezsek hata alırdık. Bu bize aslında kodların kafadan sıkılmadığını, belirli bir algoritmaya bağlı üretildiğini gösterirdi. Hepimiz operatörümüzün kontör yükleme hattını arayıp rastgele 10 tuşa basarak bedava kontör yüklemeyi denemişizdir, eminim. Çünkü ben hala şansımı denerim :)

10 karakter uzunluğunda, rastgele harf ve sayılar içeren (yada bir algoritmaya bağlı olarak oluşturulmuş) birkaç milyon adet adet kod üretmek çok zor değil. Ancak yanılmıyorsam bu veritabanı biraz fazla (yada çok çok fazla) büyük olacaktır. Basit bir sunucuda bu tablo içerisinde siteden girilen kodu arayıp eşleşmeyi kontrol etmek de biraz zaman alır gibime geliyor. Peki magnum, cornetto, turkcell, avea, vodafone ve Fritolay bunu nasıl yapıyor?

Tahminlerim doğruysa bütün olasılıkları bir veritabanına yükleyip buradan kontrol ettirmiyorlar. Girilen kodu bir şekilde inceleyip algoritmaya uyumlu olup olmadığını kontrol ediyorlar. Aynı T.C Kimlik numarasının ilk 10 hanesinin kendi içinde oluşturduğu algoritma ile 11. ilk 11 hanenin de kendi arasında oluşturduğu algoritmayla 12. haneyi vermesi gibi bir algoritma sistemi mevcut sanırsam.

Şimdi bir göz attım da buraya kadar zırvalamışım sanırım, kısa kesiyorum:

Bu gibi bir sistemim mantığı nedir, ne ne olurda neyi verir?
Böyle bir sistemi üretip kuran firmalar yada kişiler var mı (sadece meraktan, ülke çapında bir çekiliş yapma gibi bir niyetim yok, WM Çekiliş Aracı bana yetiyor :) )
Ve aşağı yukarı ne fiyattan yapıyorlardır bunu, 10 tane karakter için 10 bin lira falan istemiyorlardır umarım :p
 

 

elektronikssl
webimgo

myenes myenes $php = new PHP(); Kullanıcı
  • Üyelik 28.09.2011
  • Yaş/Cinsiyet 38 / E
  • Meslek Back-end Developer
  • Konum İstanbul Avrupa
  • Ad Soyad E** G**
  • Mesajlar 1051
  • Beğeniler 253 / 258
  • Ticaret 5, (%100)
Benin aklıma şu geldi 10 karakter uzunluğunda Türkçe harf ve sayılar kullanılır olsun. Bu karakterleri 5 gruba ayıralım yani ilk 2 karakter bir grup sonraki iki karakter bir grup gibi. Daha sonra bu 5 gruba bazı özel veriler girelim yani, 1.grup da bulunan karakterler "A" harfi ile "Ğ" harfine kadar rastgele sayılar seçilsin. 2.gruptakiler de farklı aralıklar belirlensin vs. bu şekilde oluyordur büyük ihtimal :) Ben kısa bir özet geçtim bunu birazda irdelersek dahada zorlaştırabiliriz :)
Batuhan

kişi bu mesajı beğendi.

Hurkal Hurkal Sms Onayı Gerekli Banlı Kullanıcı
  • Üyelik 05.08.2011
  • Yaş/Cinsiyet - / E
  • Meslek Öğretmen
  • Konum İstanbul Avrupa
  • Ad Soyad ** **
  • Mesajlar 382
  • Beğeniler 89 / 114
  • Ticaret 0, (%0)
Bunu istediğiniz şekilde belirleyebilirsiniz. 10 karakterli bir kod için aklıma gelen birkaç kural şu şekilde olabilir:


    [*]1. ve 10. karakterin toplamının mod10'u 5. karakteri vermeli
    [*]Tüm karakterlerin toplamı tek sayı olmalı
    [*]3. karakterin 3 ile çarpımının mod10'u 9. karakteri vermeli, 9. karakterin 3 katının mod9'u ilk karakteri vermeli


Kuralın mantığını siz belirlersiniz. Bu arada yukarıdakilerin hepsi rakam kümesi kullanılarak {0,1,2...9} yapılıyormuş gibi algılamış olabilirsiniz. Karakterlerin bilgisayar karşılığında ASCII kod karşılıkları, kısaca işimize yarayacak olan sayısal değeri kullanacağız.

Fiyat konusuna gelince... Bir programcının sadece kodunu yazması ve veritabanını hazırlaması, bu kodları üretmesi, bu kodların tek kullanımlık olmasını sağlaması aslında basit bir iş. Bunun için istenen uçuk bir rakam olmayacaktır.
Batuhan Riza 3579

kişi bu mesajı beğendi.

3579 3579 WM Aracı Anonim Üyelik
  • Üyelik 30.01.2012
  • Yaş/Cinsiyet - /
  • Meslek
  • Konum
  • Ad Soyad ** **
  • Mesajlar 2434
  • Beğeniler 686 / 1151
  • Ticaret 1, (%100)
Bahsettiğin siteler büyük sitelerdir, kendilerine ait sunucuları olduğu için veritabanına kaydederler. Kaydedilen kod, ile girilen kod eşleşirse, ilk girişde bu çereze ya da oturuma kaydedilir fakat veritabanından silinir. Oyunu bitirinceye kadar / çekiliş bitinceye kadar o şekilde kalır. Oyun bitince, oturum/çerez silinir ve o kodu tekrar girseniz de hiçbir işe yaramaz.

Bazılarında ise farklı algoritma vardır.
Örnek veriyorum.

QWERTYUIOPASDFGHJKLZXCVBNM gibi klavyedeki harfleri sırayla yazdık.

Şimdi burada şu tarz bir algoritma yazılabilir...

Eğer çubuktan çıkan şifrenin ilk harfi Q ise, qdan itibaren ikişer karakterli harfleri al. (Q-E-T-U...)

Eğer çubuktan çıkan şifrenin ilk harfi W ise, wden sonraki ikişer karakterli harfleri al.(W-R-Y-I..)

Daha sonra bunları girilen şifre ile eşleştir. :)

Böylelikle veritabanına gerek kalmadan sorgulama yapılabilir. Tabi bu ufak bir iki şifre için geçerli olabilecek bir algoritma. Milyonları kapsayacak bir algoritma için çook daha gelişmiş şeyler yapılır. (matematikteki mod kavramını vs. iyi biliyorsanız zorluk çekmezsiniz.. :))

Basitçe bu mantık da kullanılabiliyor. :)


Edit:
Aklıma gelmişken TC Kimlik No algoritması şu şekildedir;
TC Kimlik numaraları 11 basamaktan oluşmaktadır.
İlk 9 basamak arasında kurulan bir algoritma bize 10. basmağı, ilk 10 basamak arasında kurulan algoritma ise bize 11. basamağı verir.
11 hanelidir.
Her hanesi rakamsal değer içerir.
İlk hane 0 olamaz. 1. 3. 5. 7. ve 9. hanelerin toplamının 7 katından, 2. 4. 6. ve 8. hanelerin toplamı çıkartıldığında, elde edilen sonucun 10'a bölümünden kalan, yani Mod10'u bize 10. haneyi verir.
1. 2. 3. 4. 5. 6. 7. 8. 9. ve 10. hanelerin toplamından elde edilen sonucun 10'a bölümünden kalan, yani Mod10'u bize 11. haneyi verir.


Hayal gücünü kullan. :)
Batuhan

kişi bu mesajı beğendi.

wmaraci
wmaraci

Batuhan Batuhan Kendine webmaster Kullanıcı
  • Üyelik 08.05.2011
  • Yaş/Cinsiyet 28 / E
  • Meslek Öğrenci
  • Konum Ankara
  • Ad Soyad B** B**
  • Mesajlar 3455
  • Beğeniler 783 / 1009
  • Ticaret 1, (%100)

myenes adlı üyeden alıntı

Benin aklıma şu geldi 10 karakter uzunluğunda Türkçe harf ve sayılar kullanılır olsun. Bu karakterleri 5 gruba ayıralım yani ilk 2 karakter bir grup sonraki iki karakter bir grup gibi. Daha sonra bu 5 gruba bazı özel veriler girelim yani, 1.grup da bulunan karakterler "A" harfi ile "Ğ" harfine kadar rastgele sayılar seçilsin. 2.gruptakiler de farklı aralıklar belirlensin vs. bu şekilde oluyordur büyük ihtimal :) Ben kısa bir özet geçtim bunu birazda irdelersek dahada zorlaştırabiliriz :)


Hürkal adlı üyeden alıntı

Bunu istediğiniz şekilde belirleyebilirsiniz. 10 karakterli bir kod için aklıma gelen birkaç kural şu şekilde olabilir:


  • 1. ve 10. karakterin toplamının mod10'u 5. karakteri vermeli

  • Tüm karakterlerin toplamı tek sayı olmalı

  • 3. karakterin 3 ile çarpımının mod10'u 9. karakteri vermeli, 9. karakterin 3 katının mod9'u ilk karakteri vermeli



Kuralın mantığını siz belirlersiniz. Bu arada yukarıdakilerin hepsi rakam kümesi kullanılarak {0,1,2...9} yapılıyormuş gibi algılamış olabilirsiniz. Karakterlerin bilgisayar karşılığında ASCII kod karşılıkları, kısaca işimize yarayacak olan sayısal değeri kullanacağız.

Fiyat konusuna gelince... Bir programcının sadece kodunu yazması ve veritabanını hazırlaması, bu kodları üretmesi, bu kodların tek kullanımlık olmasını sağlaması aslında basit bir iş. Bunun için istenen uçuk bir rakam olmayacaktır.


Kakarotto adlı üyeden alıntı

Bahsettiğin siteler büyük sitelerdir, kendilerine ait sunucuları olduğu için veritabanına kaydederler. Kaydedilen kod, ile girilen kod eşleşirse, ilk girişde bu çereze ya da oturuma kaydedilir fakat veritabanından silinir. Oyunu bitirinceye kadar / çekiliş bitinceye kadar o şekilde kalır. Oyun bitince, oturum/çerez silinir ve o kodu tekrar girseniz de hiçbir işe yaramaz.

Bazılarında ise farklı algoritma vardır.
Örnek veriyorum.

QWERTYUIOPASDFGHJKLZXCVBNM gibi klavyedeki harfleri sırayla yazdık.

Şimdi burada şu tarz bir algoritma yazılabilir...

Eğer çubuktan çıkan şifrenin ilk harfi Q ise, qdan itibaren ikişer karakterli harfleri al. (Q-E-T-U...)

Eğer çubuktan çıkan şifrenin ilk harfi W ise, wden sonraki ikişer karakterli harfleri al.(W-R-Y-I..)

Daha sonra bunları girilen şifre ile eşleştir. :)

Böylelikle veritabanına gerek kalmadan sorgulama yapılabilir. Tabi bu ufak bir iki şifre için geçerli olabilecek bir algoritma. Milyonları kapsayacak bir algoritma için çook daha gelişmiş şeyler yapılır. (matematikteki mod kavramını vs. iyi biliyorsanız zorluk çekmezsiniz.. :))

Basitçe bu mantık da kullanılabiliyor. :)


Edit:
Aklıma gelmişken TC Kimlik No algoritması şu şekildedir;


Hayal gücünü kullan. :)


Anladım, hepinize teşekkür ederim, çok yardımcı oldunuz :)
 

 

Altinkaynak Altinkaynak WM Aracı Kullanıcı
  • Üyelik 26.08.2012
  • Yaş/Cinsiyet 32 / E
  • Meslek Öğrenci
  • Konum Samsun
  • Ad Soyad ** **
  • Mesajlar 99
  • Beğeniler 0 / 27
  • Ticaret 0, (%0)
Tam ilgim alanım olan bir konu. aslında.

Örnekleyerek yola çıkalım arkadaşlar. T.C Nüfus ve Vatandaşlık İşleri Müdürlüğü belli bir algoritmaya göre kimlik numaraları üreterek yeni bireylere atamaktadır. Biraz basite indirgeyerek anlatmaya çalışacağım. Sizin kimlik numaranızla bir büyük aile bireyinizin kimlik numarası aranızda 29999 sayısı bulunmaktadır. Tabi ki bu sadece ilk 9 haneyi kapsamaktadır. Son 2 hane güvenlik kodudur.

Biraz daha somut açıklayalım. Siz doğduğunuz da aileniz sizlere kayıta götürdüğünde sizden bir önce kan bağı olan kişinizin kimlik numarasının üzerine 29999 eklenir ve ilk 9 hanenin üzerinde yapılacak matematiksel işlemler ile son 2 hane ortaya çıkartılır. Bu olaya soy kütüğüde denir.

Kimlik numarasının algoritmasıyla ilgilenirsen, gelecek nesilin kimlik numaralarını bulman çok kolaydır ancak atanmadığı için sayı doğru olsa da ortada birey yoktur. Deneme amaçlı isteyene henüz hiçbir bireye atanmamış ancak kimlik numarası doğru olan birkaç numara oluşturabilirim.

Kontor algoritması da buna benzer. Algoritmayı tahmin etseniz bile, ortada eğer ki sizin ürettiğiniz algoritma ile çıkan kod piyasaya sürülmedi ise kod geçersizdir yükleme işlemi yapamazsınız. Kontor algoritmasını bulmanız sonrasında yarattığınız kodlar kim bilir ileride piyasaya sürülebilir :)

Algoritmanın tanımı bu konuda yetersiz kalıyor aslında. Algoritma ve şifreleme her zaman birbirini tamamlayan tekniklerdir arkaplanda.
Batuhan

kişi bu mesajı beğendi.

Batuhan Batuhan Kendine webmaster Kullanıcı
  • Üyelik 08.05.2011
  • Yaş/Cinsiyet 28 / E
  • Meslek Öğrenci
  • Konum Ankara
  • Ad Soyad B** B**
  • Mesajlar 3455
  • Beğeniler 783 / 1009
  • Ticaret 1, (%100)

Altınkaynak adlı üyeden alıntı

Tam ilgim alanım olan bir konu. aslında.

Örnekleyerek yola çıkalım arkadaşlar. T.C Nüfus ve Vatandaşlık İşleri Müdürlüğü belli bir algoritmaya göre kimlik numaraları üreterek yeni bireylere atamaktadır. Biraz basite indirgeyerek anlatmaya çalışacağım. Sizin kimlik numaranızla bir büyük aile bireyinizin kimlik numarası aranızda 29999 sayısı bulunmaktadır. Tabi ki bu sadece ilk 9 haneyi kapsamaktadır. Son 2 hane güvenlik kodudur.

Biraz daha somut açıklayalım. Siz doğduğunuz da aileniz sizlere kayıta götürdüğünde sizden bir önce kan bağı olan kişinizin kimlik numarasının üzerine 29999 eklenir ve ilk 9 hanenin üzerinde yapılacak matematiksel işlemler ile son 2 hane ortaya çıkartılır. Bu olaya soy kütüğüde denir.

Kimlik numarasının algoritmasıyla ilgilenirsen, gelecek nesilin kimlik numaralarını bulman çok kolaydır ancak atanmadığı için sayı doğru olsa da ortada birey yoktur. Deneme amaçlı isteyene henüz hiçbir bireye atanmamış ancak kimlik numarası doğru olan birkaç numara oluşturabilirim.

Kontor algoritması da buna benzer. Algoritmayı tahmin etseniz bile, ortada eğer ki sizin ürettiğiniz algoritma ile çıkan kod piyasaya sürülmedi ise kod geçersizdir yükleme işlemi yapamazsınız. Kontor algoritmasını bulmanız sonrasında yarattığınız kodlar kim bilir ileride piyasaya sürülebilir :)

Algoritmanın tanımı bu konuda yetersiz kalıyor aslında. Algoritma ve şifreleme her zaman birbirini tamamlayan tekniklerdir arkaplanda.


Değerli yorumun için çok teşekkürler, bu detayları bilmiyordum. :)
 

 

Lacrimas Lacrimas WM Aracı Kullanıcı
  • Üyelik 17.06.2013
  • Yaş/Cinsiyet 41 / E
  • Meslek Eticaret Uzmanı
  • Konum İstanbul Avrupa
  • Ad Soyad ** **
  • Mesajlar 5
  • Beğeniler 0 / 0
  • Ticaret 0, (%0)
peki olusturulmus kodları bir tabloya yazarak bu kodların algoritmasını bulmamız ve yeni kodlar uretmemiz mumkunmu ?
 

 

wmaraci
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al