Skip to content

lattice-based-cryptography/ring-lwe

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ring-LWE

example workflow License: MIT

Implmentation of lattice-based encryption method ring-LWE in pure Rust.

Description: This provides the basic PKE (keygen, encryption, and decryption) operations for the ring learning-with-errors and module learning-with-errors scheme.

Disclaimer: This is not secure. It is not written in constant-time nor resistant to other side-channel attacks. This is intended for educational use and not for real-world applications.

Usage: In the src directory,

cargo build

To build the binary.

cargo test

  • Performs keygen/encrypt/decrypt for a test message.
  • Checks homomorphic addition and multiplcation hold for small values.

Note: Parameters optional via

  • --params <n> <q> <t> for ring-LWE

where n is the polynomial degree, q is the ciphertext modulus, t is the plaintext modulus.

If ommitted, the default parameters will be used.

cargo run -- keygen

This will generate a public/secret keypair.

cargo run -- encrypt <public_key> <message>

Generates the ciphertext.

cargo run -- decrypt <secret_key> <ciphertext>

Decrypts the ciphertext given a secret key, printing the plaintext message.

About

Implementation of ring-LWE encryption method in Rust.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages