#encryption #compile #compile-time #string-literal

macro litcrypt

Let's encrypt your string statically during compile time

3 unstable releases

Uses old Rust 2015

0.3.0 Sep 10, 2021
0.2.1 Feb 4, 2021
0.2.0 Feb 4, 2021

#35 in #encrypted

Download history 427/week @ 2024-07-21 602/week @ 2024-07-28 535/week @ 2024-08-04 432/week @ 2024-08-11 561/week @ 2024-08-18 560/week @ 2024-08-25 321/week @ 2024-09-01 381/week @ 2024-09-08 508/week @ 2024-09-15 475/week @ 2024-09-22 454/week @ 2024-09-29 573/week @ 2024-10-06 588/week @ 2024-10-13 447/week @ 2024-10-20 589/week @ 2024-10-27 663/week @ 2024-11-03

2,318 downloads per month
Used in bolus

Apache-2.0

13KB
169 lines

LITCRYPT Build Status

It is abbreviation from "Literal Encryption", a Rust proc macro designed to encrypt text literal using simple "XOR" algorithm.

LITCRYPT let's you hide your static string literal in the binary from naughty eyes seamlessly and protect your valuable app from illegal cracking activity.

LITCRYPT works by encrypting string literal during compilation time and the encrypted string remain encrypted in both disk and memory during runtime until it will be used.

USAGE

Dependencies:

[dependencies]
litcrypt = "0.3"

Example:

#[macro_use]
extern crate litcrypt;

use_litcrypt!();

fn main(){
    println!("his name is: {}", lc!("Voldemort"));
}

use_litcrypt! macro call should be called first for initialization before you can use lc! macro function. The first parameter is your secret key used for encrypt your literal string. This key is also encrypted and will not visible under static analyzer.

Please take note that you need to set your encryption key using environment variable LITCRYPT_ENCRYPT_KEY before compile: e.g:

$ export LITCRYPT_ENCRYPT_KEY="myverysuperdupermegaultrasecretkey"

Litcrypt will encrypt each string written inside lc! statically.

Check the output binary using strings command to verify:

$ strings target/debug/my_valuable_app | grep Voldemort

If the output is blank then your valuable string in your app is safe from static analyzer tool like Hexeditor etc.

For working example code see ./examples directory, and test using:

$ cargo run --example simple

[] Robin.

Dependencies

~78KB