Pokaż wyniki 1 do 3 z 3

Temat: generator voucherów

  1. #1

    Domyślnie generator voucherów

    Witam wszystkich,

    Potrzebuję pomocy, robię własnie niewielki generator losowych cyfrowych ciągów - voucherów.

    I mam teraz mały dylemat, nie wiem jak długi ciąg cyfr powinienem generować, aby zabezpieczyć (miarę możliwości) przed wpisaniem losowego ciągu i trafieniem w jakiś z bazy.

    Do dyspozycji mam tylko cyfry, będę potrzebował około 25 000 unikalnych voucherów,
    czy ciąg 10 cyfr jest wystarczający? Zależy mi aby ciąg był jak najkrótszy.

    Czy jest jakaś literatura, bądź inne źródło mówiące o wymaganiach, technika generowania tego typu kodów... Będę wdzięczny za wszelką pomoc.

  2. #2

    Domyślnie

    Jeśli dobrze rozumiem, prawdopodobieństwo odgadnięcia kodu możesz dostać ze wzoru:

    1/(10^X/25000), gdzie X to ilość cyfr w ciągu, a 25000 to liczba voucherów.

    Przykładowo dla 10 cyfr, prawdopodobieństwo odgadnięcia kodu wyniesie 0,00025%, czyli potrzeba średnio 400000 prób. W praktyce wraz z procesem rozdawania prawidłowych kodów prawdopodobieństwo to będzie maleć - np. po rozdaniu 10000 będzie wynosiło około 0,00015%.

    Od Ciebie zależy jakie prawdopodobieństwo zaakceprtujesz.
    Ostatnio edytowane przez m4rm0 : 02-05-2016 - 13:46

  3. #3
    Zarejestrowany
    Oct 2008
    Skąd
    woj. Lubuskie. Dokładniej się nie da
    Postów
    405

    Domyślnie

    W c# jest GUID do tego, ale guid generuje stringa z hexwartościami i jeszcze ma myślniki w środku. Więc w przypadku samej liczby trza by jeszcze przelecieć to kodem który np pododaje kolejne wartości przekonwertowane na dec i zrobi resztę z dzielenia przez maksymalną możliwą, alternatywnie wrzuci do stringa ową wartość i weźmie pierwsze, ostatnie lub środkowe cyfry z ciągu (substringiem)...
    Kolejna opcja to wziąć jakąś funkcję hashującą i ją przeliczyć aby wszędzie były cyferki i potem wziąć określony kawałek.
    Potem wrzucić na bazę "blokadę" że po podaniu z 1 połączenia 3 nieprawidłowych masz blokadę na 30 minut (zrobić to jako stored procedure na bazie samej) i tyle. Powodzenia w zgadywaniu.

    Tak czy inaczej do zrobienia.
    Jeśli nie będziesz mieć pod górke, nigdy nie dojdziesz na szczyt.

Tagi

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj