Skip to Content
Nouvelle version 12 disponible 🎉

Performances

Le chiffrement des valeurs et des tableaux échange un faible coût à l’exécution contre l’assurance que vos constantes et les données de vos tableaux n’apparaissent pas dans le code décompilé.

  • DĂ©chiffrement Ă  chaque accès. Chaque constante chiffrĂ©e est obtenue par un appel de dĂ©chiffrement au lieu d’être chargĂ©e directement : la lecture d’une valeur coĂ»te donc plus cher qu’un simple ldc. Dans l’immense majoritĂ© du code, la diffĂ©rence est imperceptible, mais elle peut s’accumuler lorsqu’une boucle critique pour les performances lit des constantes chiffrĂ©es des millions de fois.
  • Reconstruction du tableau Ă  la première utilisation. Un tableau en ligne chiffrĂ© est reconstruit Ă  partir de ses donnĂ©es dĂ©chiffrĂ©es la première fois qu’il est initialisĂ©.

Comme le coût est proportionnel à la fréquence de lecture des valeurs chiffrées, appliquez le chiffrement là où il protège quelque chose qui en vaut la peine plutôt qu’à chaque littéral de l’assembly. Si une boucle serrée présente un surcoût mesurable, envisagez de placer la constante dans une variable en dehors de la boucle, ou de n’activer le chiffrement que pour les types de données qui contiennent réellement des données sensibles (voir Configuration).

Comme pour tout paramètre de protection, exécutez votre suite de tests et, le cas échéant, vos tests de performances sur l’assembly obfusqué pour vérifier que le compromis est acceptable pour votre application.

Last updated on