există vreo funcție $f : \text{seed}, \text{range}, \text{state} \mapsto n$,
Da; sunt cunoscuți ca Format Păstrarea criptării funcții. Acestea sunt funcții care sunt cifruri bloc de dimensiuni arbitrare:
- Cerința 1: Intervalul de ieșire poate fi mic. De exemplu. din $0$ la $10^6$.
Da, pot lua intervale destul de mici. Din experiența mea, FPE-urilor tind să nu le placă intervalele cu adevărat mici (de exemplu, un interval mai mic de 100 de valori); un interval de un milion este suficient pentru cei pe care îi cunosc
- Cerința 2: Fără ciocniri pentru diferite semințe
Dacă folosim sămânța ca cheie FPE și starea ca text simplu FPE, acest lucru este garantat - operațiunea FPE este inversabilă (adică, punând operația FPE în modul de decriptare și alimentând-o cu aceeași cheie, acesta convertește textul cifrat înapoi în text clar), prin urmare, două texte clare nu pot fi convertite în același text cifrat
Cerința 3: Nu se poate prezice care este următorul număr decât dacă se apelează funcția $f$
De asemenea, adevărat; FPE este conceput pentru a fi sigur (cu excepția cazului în care cunoașteți cheia), prin urmare, singura modalitate de a prezice modul în care este transformat textul simplu este utilizarea cheii.
Funcțiile FPE au, de asemenea, o „ajustare” (o intrare suplimentară care nu trebuie să fie privată, care modifică maparea definită de criptare) - aș sugera să folosiți intervalul ca parte a modificării (în plus față de modificarea modului în care funcția FPE funcționează intern) - în acest fel, nu trebuie să vă faceți griji cu privire la funcția cu un interval care scurge informații despre funcția cu un interval diferit.
Acum, dacă aveți nevoie de sfaturi cu privire la ce funcție FPE să utilizați, cea mai bună pe care am găsit-o este FF1 definit aici funcţie; din ceea ce am sămânță, pare a fi destul de solid.