A Python implementation of the Learning With Errors cryptography scheme
Project description
LWE-Python
What is this library's purpose?
This is a Python implementation of the Learning With Errors crypto algorithim. The LWE is a quantum-resistant algorithim based on matrices. Encoded information is in the form of a vector.
To read more about LWE, you can refer to this Medium article or the original paper published in 2005.
Who should use this library?
If you are interested in securing information outside of the usual methods presented, i.e. RSA, PGP, etc.
How to use
from lwe_python import PublicKey, PrivateKey, encrypt_string, decrypt_data
import math
import random
# set up an arry of error values; this MUST match the
# number_of_equations parameter in the PublicKey constructor
error_vectors = []
number_of_equations = 10
mod_number = 97
for x in range(0, number_of_equations):
error_vectors.append(math.floor(random.random() * 4))
# you must keep this value and the error array secret. If an attacker were to get their
# hands on both, then they could reverse engineer any message.
secret_value = 200
pub_key = PublicKey(mod_number=mod_number, error_vectors=error_vectors, number_of_equations=number_of_equations)
priv_key = PrivateKey(secret_value, mod_number)
# you must call this function to generate "B" values; there are values that take
# into account the values from the error array and the secret
pub_key.generate_key_values(secretValue)
# encrypt a string
encrypted_data = encrypt_string("hello world", pub_key)
# decrypt a string
message = decrypt_data(encryted_data, priv_key)
# s_aves a pub.lwe.key file to the current directory
pub_key.save_to_keyfile()
# saves a sec.lwe.key file to the current direcotry
priv_key.save_to_keyfile()
# create a PublicKey instance from a pub.lwe.key file
PublicKey.load_from_keyfile("pub.lwe.key")
# create a PrivatecKey instance from a pub.lwe.key file
PrivateKey.load_from_keyfile("sec.lwe.key")
# load a PublicKey from JSON data
PublicKey.loadJSON(keydata)
# export PublicKey data as a JSON Object
keydata = pubKey.to_json()
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file lwe_python-0.1.0.tar.gz.
File metadata
- Download URL: lwe_python-0.1.0.tar.gz
- Upload date:
- Size: 5.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cb84e8b6a4d6535fa80f9097aa303f108ece168f6d7f42593bfa9d105ea2df4c
|
|
| MD5 |
2c218f81bb2947aa6abb9d8615bf9f51
|
|
| BLAKE2b-256 |
b758b06d7085f97c3611f3200791d92533ef6dbed91282d1787474d9f726025e
|
File details
Details for the file lwe_python-0.1.0-py3-none-any.whl.
File metadata
- Download URL: lwe_python-0.1.0-py3-none-any.whl
- Upload date:
- Size: 6.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
53e9cc2c99c66618b6405640b105152127242560c69dc9f5522b7f50e8c08df5
|
|
| MD5 |
8007484544206dceaca93a72a0b65092
|
|
| BLAKE2b-256 |
900cb25041cc44356383aa23063167f1d8eb94a176848f5817eefc33b943f7d2
|