Come rappresentare un sistema di permessi complessi in un singolo hash o set di caratteri?

1

Eve Online, un gioco che ho usato per giocare, aveva un interessante sistema di "permessi" per le interazioni con gli account con altre app.

Le autorizzazioni comprendevano dozzine di autorizzazioni individuali, ognuna appartenente a una categoria (che poteva o non poteva essere rilevante per l'hash risultante)

La cosa interessante è che l'intero stato di autorizzazione dell'account potrebbe essere salvato come una stringa risultante, o hash, che tradotto a sua volta, torna a un insieme dettagliato di autorizzazioni individuali.

Quale algoritmo o sistema è responsabile di un modo così ingegnoso e compresso per la firma delle autorizzazioni?

    
posta 1Up 26.03.2016 - 22:34
fonte

2 risposte

6

Supponendo che le autorizzazioni fossero binarie e che il set di permessi fosse predeterminato e raramente modificato, un bitfield sarebbe un buon punto di partenza. Accoppia ogni bitfield (con una lunghezza fissa) con un identificativo per l'app (anche di lunghezza fissa, forse un GUID) e hai un tipo di record semplice che può essere ripetuto per ogni app. Quindi convertilo in Base64 o in un modo simile per codificare puro binario in testo leggibile e il gioco è fatto.

Specificamente, un bitfield usa un singolo bit per ogni valore booleano, mascherando i bit all'interno di byte (o parole) con operatori bitwise efficienti per impostare o leggere quei bit. Questo combina l'utilizzo efficiente della memoria con operatori veloci a scapito di una manipolazione piuttosto scomoda.

    
risposta data 26.03.2016 - 22:46
fonte
2

Questo può essere fatto usando la serializzazione degli oggetti e la deserializzazione.

La serializzazione converte tutte le proprietà rilevanti in un meccanismo di memorizzazione (forse un file).

La deserializzazione è il processo opposto, la conversione dell'oggetto memorizzato in un oggetto.

La compressione e la crittografia possono essere ulteriormente aggiunte al processo di de / serializzazione per ridurre entrambe le dimensioni dell'oggetto memorizzato e rendere più difficile la determinazione del contenuto.

    
risposta data 26.03.2016 - 22:43
fonte

Leggi altre domande sui tag