x86byte/sbox

GitHub: x86byte/sbox

Stars: 97 | Forks: 10

# sbox - Compile-time AES string obfuscation for C++ Standard solutions rely on `length + "#" + string`. That is trivial to reverse. **sbox** utilizes a `constexpr` AES-128 block cipher to mutate strings into high-entropy noise. ### The Story During the Neetcode "Encode and Decode Strings" challenge, I ported the AES engine from my obfuscation project, **[Obfusk8](https://github.com/x86byte/Obfusk8)**. The implementation passed in **7ms** on the first submission. Cryptographic security shouldn't be a trade-off for performance. ### Features - **No Delimiters:** Fixed-width headers and block mutation replace predictable separators. - **Binary Safe:** Effortlessly handles raw payloads and null bytes. - **Static Stealth:** Plaintext is eliminated at compile-time. Using the provided macros, `strings.exe` (or `strings` in linux) returns zero results. ### How to Use Check the [EXAMPLES](https://github.com/x86byte/sbox/tree/main/EXAMPLES) folder for implementation details: 1. **Multi-String Example (`sbox_test.cpp`):** Demonstrates how to handle a `vector` using the `_OBF(str)` macro for batch processing. Useful for transit-ready obfuscation. 2. **Single String Example (`sbox_test1.cpp`):** Demonstrates atomic materialization using the `ObfStr(str)` macro. Best for single variable assignments: string s = ObfStr("ama obfuscation addicted"); ### Performance **7ms runtime.** Proving that overkill can still be optimal. **Author:** [x86byte](https://github.com/x86byte)