Supported Values
Value and Array Encryption can be enabled independently for each data type, so you can protect only what matters and keep the rest untouched. See Configuration for how to select them.
Encrypted
| Type | What is protected |
|---|---|
int32 | 32-bit integer constants — every ldc.i4 form, including small values, -1, and int.MinValue/int.MaxValue. Because C# byte, sbyte, short, ushort, char, bool and enum constants compile to int32 loads, they are protected under this option as well. |
int64 | 64-bit integer (long/ulong) constants. |
single | 32-bit floating-point (float) constants. |
double | 64-bit floating-point (double) constants, and decimal literals (whose components are stored as integer constants). |
array | Inline arrays of primitive elements initialized from a data blob — int, byte, sbyte, short, long, double, float, char, bool and enum arrays such as int[] a = { 1, 2, 3 };. |
Left unchanged
To keep the obfuscated program behaving exactly like the original, some inline data is deliberately not transformed and is emitted as-is:
- Arrays that are not initialized from a single primitive data blob — multi-dimensional arrays (
int[,]), jagged arrays (int[][]), and arrays of structs or other reference types. These are built element by element by the compiler rather than from an encryptable blob, so their individual elements are still subject to numeric value encryption where applicable. - String constants — these are covered by the dedicated String Encryption feature, not by value encryption.
Enabling every type gives the broadest protection; use a subset when you only need to hide specific kinds of data or want to minimize the runtime overhead described in Performance.
Last updated on