# Obfustring
[](https://github.com/Retoon/obfustring) [](https://crates.io/crates/obfustring) [](https://docs.rs/obfustring/latest/obfustring)
[](https://github.com/Retoon/obfustring/blob/master/LICENSE)
This crate provides a obfuscation macro for string literals. This makes it easy to protect them from common reverse engineering attacks like string reference lookup in something like a debugger or hex editor.
A string literal `""` is given as the input and converted into a `[u8; str_size*2]` array literal that is then stored inside the binary. Every character is offset by a random amount. This offset is stored alongside the original data so it can be reconstructed.
## Installation
```toml
[dependencies]
obfustring = "0.5.0"
```
# Syntax & Usage
The crate provides a `obfustring!()` macro that takes in a single string literal.
```rs
use obfustring::obfustring;
let obfuscated_string = obfustring!("Hello obfustring!"); // <-- Won't show up in binaries or hex editors
let generic_string = String::from("Hello regular string!"); // <-- Will show up in binaries or hex editors
println!("obfuscated_string: {}", obfuscated_string);
println!("generic_string: {}", generic_string);
```
# Disclaimer
Note that you should **never** have any encryption/api keys or
sensetive data hardcoded into your program. Though this macro
would make it harder, it wouldn't absolutely hide it from
someone looking hard enough. **Stick to environment variables.**
## License
This project is licensed under the [MIT license].
[mit license]: https://github.com/Retoon/obfustring/blob/master/LICENSE