Skip to main content

Lightweight symetric encryption

Project description

NALEnc - Python Encryption Library

NALEnc is a lightweight Python encryption library designed for securely encrypting and decrypting text and binary data. With an intuitive interface and robust functionality, it is ideal for developers seeking a straightforward yet effective encryption solution.


🚀 Features

  • Flexible Input: Encrypt and decrypt strings, binary data, or NumPy arrays.
  • Password Support: Accepts passwords as strings, bytes, lists of integers (0-255), or NumPy arrays.
  • Optimized for Performance: Best suited for messages of size 2046n, where n ∈ N.
  • Powered by NumPy: Leverages NumPy for efficient operations.

📦 Installation

Install the library via pip:

pip install nalenc

📝 Usage

🔗 Importing the Library

import nalenc
import numpy as np

🔑 Creating an Instance of NALEnc

To use the library, create an instance of the NALEnc class with a password. The password can be:

  • A string
  • A byte sequence
  • An iterable of integers (each in the range 0-255)
  • A NumPy array of integers (dtype must be np.uint8)

Example:

# Generate a password as a NumPy array
password = np.random.randint(0, 256, size=512, dtype=np.uint8)
nal = nalenc.NALEnc(password)

🔒 Encrypting Data

Use the encrypt method to encrypt a message. Supported input types:

  • String
  • Byte sequence
  • Iterable of integers (0-255)
  • NumPy array (dtype: np.uint8)

Example:

# Encrypt a string
encrypted = nal.encrypt("Hello, World!")

# Encrypt binary data
binary_data = b"\x89PNG\r\n\x1a\n"
encrypted_binary = nal.encrypt(binary_data)

# Encrypt a NumPy array
array_data = np.array([1, 2, 3, 4, 5], dtype=np.uint8)
encrypted_array = nal.encrypt(array_data)

🔓 Decrypting Data

Use the decrypt method to decrypt an encrypted message.

Example:

# Decrypt the encrypted string
decrypted = nal.decrypt(encrypted)  # Returns a list of integers

# Decrypt binary data
decrypted_binary = nal.decrypt(encrypted_binary)

# Decrypt a NumPy array
decrypted_array = nal.decrypt(encrypted_array)

📂 Working with Binary Files

NALEnc supports encrypting and decrypting binary files. Read the file as binary data, process it, and save the result. Cast the encrypted data to bytes before writing to a file.

Example:

# Encrypt a binary file
with open("input.bin", "rb") as f:
    data = f.read()

encrypted_data = nal.encrypt(data)

with open("output.enc", "wb") as f:
    f.write(bytes(encrypted_data))

# Decrypt the binary file
with open("output.enc", "rb") as f:
    encrypted_data = f.read()

decrypted_data = nal.decrypt(encrypted_data)

with open("decrypted.bin", "wb") as f:
    f.write(bytes(decrypted_data))

📈 Optimal Message Size

For best performance, ensure message sizes are 2048n - 2, where n is a positive integer. This helps maximize efficiency during encryption and decryption.


📚 API Reference

Class: NALEnc

Constructor

NALEnc(password: str | bytes | Iterable[int] | np.types.NDArray[np.uint8])
  • password: The encryption password. Acceptable types:
    • String
    • Byte sequence
    • Iterable of integers (0-255)
    • NumPy array (np.types.NDArray[np.uint8])

Methods

encrypt(msg: str | bytes | Iterable[int] | np.types.NDArray[np.uint8])

Encrypts the given message.

  • msg: The message to encrypt. Input types:
    • String
    • Byte sequence
    • Iterable of integers (0-255)
    • NumPy array (np.types.NDArray[np.uint8])
  • Returns: The encrypted message as a list of integers.
decrypt(msg: str | bytes | Iterable[int] | np.types.NDArray[np.uint8])

Decrypts the given encrypted message.

  • msg: The encrypted message. Input types:
    • String
    • Byte sequence
    • Iterable of integers (0-255)
    • NumPy array (np.types.NDArray[np.uint8])
  • Returns: The decrypted message as a list of integers.

💡 Example Code

import nalenc
import numpy as np

# Generate a random password
password = np.random.randint(0, 256, size=512, dtype=np.uint8)

# Create an instance of NALEnc
nal = nalenc.NALEnc(password)

# Encrypt a message
message = "Encrypt this message!"
encrypted = nal.encrypt(message)

# Decrypt the message
decrypted = nal.decrypt(encrypted)

print("Original:", message)
print("Encrypted:", bytes(encrypted))  # Cast to bytes for readability
print("Decrypted:", bytes(decrypted))

📜 License

This library is licensed under the LGPL License. See the COPYING and COPYING.LESSER files for more information.


For questions, feedback, or contributions, feel free to open an issue on the GitHub repository.

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

nalenc-1.2.0.tar.gz (30.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nalenc-1.2.0-py3-none-any.whl (34.7 kB view details)

Uploaded Python 3

File details

Details for the file nalenc-1.2.0.tar.gz.

File metadata

  • Download URL: nalenc-1.2.0.tar.gz
  • Upload date:
  • Size: 30.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.3

File hashes

Hashes for nalenc-1.2.0.tar.gz
Algorithm Hash digest
SHA256 737a758a8bd6faa784435e2858e1801e82b814473a5322797ff19cbc94df1fa8
MD5 78102acbda4d01f5b0d84ce109f15b04
BLAKE2b-256 3d10128d93d876dfa1039bc5027790a99dabb1bd3ae20b6c852b7dfa364ef738

See more details on using hashes here.

File details

Details for the file nalenc-1.2.0-py3-none-any.whl.

File metadata

  • Download URL: nalenc-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 34.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.3

File hashes

Hashes for nalenc-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a2ad5bc7c26b435462dc680d5f77d4c0e6b7b0748837258723d3dc95435d18f3
MD5 8c7b7716f578a08c34d4d0747904e5b6
BLAKE2b-256 98a79c95f3b953d464545644fa2ad979d00c98d81c893da63f528c775c2d70e9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page