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, wheren ∈ 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)
| File | Size | Uploaded | |
|---|---|---|---|
| nalenc-1.2.0.tar.gz | 30.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|