Skip to main content

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.

Metadata

Release files for nalenc 1.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for nalenc 1.2.0
File Size Uploaded
nalenc-1.2.0.tar.gz 30.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for nalenc 1.2.0
File Interpreter ABI Platform
nalenc-1.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 65.2 kB

Release files / nalenc-1.2.0.tar.gz

Download URL nalenc-1.2.0.tar.gz
Size 30.5 kB
Tags Source
SHA-256 checksum
How to use checksums
737a758a8bd6faa784435e2858e1801e82b814473a5322797ff19cbc94df1fa8
BLAKE2b-256 checksum
How to use checksums
3d10128d93d876dfa1039bc5027790a99dabb1bd3ae20b6c852b7dfa364ef738
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.0.1 CPython/3.12.3

Release files / nalenc-1.2.0-py3-none-any.whl

Download URL nalenc-1.2.0-py3-none-any.whl
Size 34.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a2ad5bc7c26b435462dc680d5f77d4c0e6b7b0748837258723d3dc95435d18f3
BLAKE2b-256 checksum
How to use checksums
98a79c95f3b953d464545644fa2ad979d00c98d81c893da63f528c775c2d70e9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.0.1 CPython/3.12.3

Release history Release notifications | RSS feed

This release

1.2.0 This release

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page