Max: Funktion zum "Verschlüsseln" von Angebotsnummern

Hallo,

in einem Projekt werden zahlreichen (>10.000) Kunden je ein induviduelles Angebot unterbreitet. Die Kunden sollen bei Interesse eine (Angebots-)Nummer auf einer Website eingeben können und so einen "nächsten Schritt" (noch nicht ganz den Auftrag ;-) auslösen können.

Nun soll das ganze folgenden Anforderungen genügen:

  • Ein Kunde soll nicht "einfach" aus der Nummer ablesen können, der wievielte Kunde er ist.

  • Man soll nicht "einfach", z.B. durch Additon von "1" zur eigenen Nummer auf eine gültige andere Nummer kommen.

  • es ist lar, dass die beiden Kriterien nur "weitesgehend" erfüllt werden können, raten kann immer zu Treffern führen. Es soll nur den gröbsten Unfug verhindern.

Ich brauche also eine Funktion die injektiv ist (die Numern müssen ja Eindeutig bleiben), nicht surjektiv (Kriterium 2., Nummernkreis soll also künstlich "aufgebläht" werden) und aufeinander folgende Elemente der Ausgangsmenge sollen auf Elemente abgebildet werden, deren Abstand untereinander nicht konstant ist, evtl. noch nicht einmal aufeinander folgen.

  1. Hi there,

    Ich brauche also eine Funktion die injektiv ist (die Numern müssen ja Eindeutig bleiben), nicht surjektiv (Kriterium 2., Nummernkreis soll also künstlich "aufgebläht" werden) und aufeinander folgende Elemente der Ausgangsmenge sollen auf Elemente abgebildet werden, deren Abstand untereinander nicht konstant ist, evtl. noch nicht einmal aufeinander folgen.

    So eine Funktion gibt es nicht, solange man sie nicht geschrieben hat. Ohne Dir nahetreten zu wollen, aber nachdem Du diese Funktion benötigst ist es irgendwie naheliegend, daß Du sie auch schreibst;)
    Am ehesten sinnvoll, wenn Du die eigentlichen Auftragsnummern in einem Array (oder Table) ablegst und die (zufällig generierten) Auftragsnummern, die der Kunde erhält, als Key verwendest. Damit löst Du jede Beziehung, die Schlüsse zuließe, auf...

    1. hi,

      Am ehesten sinnvoll, wenn Du die eigentlichen Auftragsnummern in einem Array (oder Table) ablegst und die (zufällig generierten) Auftragsnummern, die der Kunde erhält, als Key verwendest. Damit löst Du jede Beziehung, die Schlüsse zuließe, auf...

      Genauso hab ich vorn paar Jahren mein erstes CGI-Sicherheitsproblem gelöst, es ging dabei darum, Dateinamen in einem Perl-Script "fest zu verdrahten" (in einem hash) so das nicht jede x-beliebige Datei als Parameter eingegebn werden konnte.

      Hotte

      --
      Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.