Skip to Content
Nuova versione 12 disponibile 🎉

Prestazioni

La cifratura di valori e array comporta un piccolo costo in fase di esecuzione, in cambio del quale le tue costanti e i dati dei tuoi array restano fuori dal codice decompilato.

  • Decifratura a ogni accesso. Ogni costante cifrata viene letta tramite una chiamata di decifratura invece di essere caricata direttamente, quindi la lettura di un valore costa più di un semplice ldc. Per la stragrande maggioranza del codice la differenza è impercettibile, ma può farsi sentire quando un ciclo molto intenso legge costanti cifrate milioni di volte.
  • Ricostruzione dell’array al primo utilizzo. Un array inline cifrato viene ricostruito dai suoi dati decifrati la prima volta che viene inizializzato.

Poiché il costo è proporzionale alla frequenza con cui i valori cifrati vengono letti, applica la cifratura dove protegge qualcosa che vale la pena proteggere, e non a ogni valore letterale dell’assembly. Se un ciclo stretto mostra un overhead misurabile, valuta di spostare la costante in una variabile fuori dal ciclo, oppure di abilitare la cifratura solo per i tipi di dati che contengono davvero dati sensibili (vedi Configurazione).

Come per qualsiasi impostazione di protezione, esegui la tua suite di test e, se opportuno, i tuoi benchmark di prestazioni sull’assembly offuscato, per verificare che il compromesso sia accettabile per la tua applicazione.

Last updated on