Skip to main content

Kaalka Encryption Library

Project description

Kaalka: Time-Based Encryption Library for Python

Kaalka is a robust, time-based encryption library for Python, inspired by the Kaalka Encryption Algorithm. It enables secure, non-trivial encryption and decryption of messages using either the current system time or a user-provided timestamp as the cryptographic key. Kaalka is suitable for secure messaging, cryptographic experiments, and time-sensitive data protection.

🚀 Features

  • Time-based encryption: Use the current system time or any timestamp (HH:MM:SS) as the encryption key.
  • Robust and unpredictable: Combines trigonometric functions, clock hand angles, and character indices for strong, non-trivial encryption.
  • Easy integration: Simple Python API for encrypting and decrypting messages.
  • NTP support: Includes KaalkaNTP for network time protocol-based encryption.

🔒 How the Algorithm Works

Kaalka transforms each character in your message using a key derived from the angles between the hour, minute, and second hands of a clock at a given time. The algorithm:

  • Calculates angles for the provided or current time.
  • Selects trigonometric functions based on the quadrant of each angle.
  • Combines these values with the character's index and the time to generate a unique, non-reversible transformation for each character.
  • Decryption reverses this process using the same timestamp.

Note: Encryption and decryption must use the same timestamp (or occur at the same second if using system time).

📦 Installation

pip install kaalka

📝 Usage

Unified Text and File Encryption/Decryption

from kaalka import Kaalka

# Text encryption/decryption (system time)
kaalka = Kaalka()
message = "Hello, world!"
encrypted_message = kaalka.encrypt(message)
decrypted_message = kaalka.decrypt(encrypted_message)

# Text encryption/decryption (explicit time)
timestamp = "14:35:22"
encrypted_message = kaalka.encrypt(message, timestamp)
decrypted_message = kaalka.decrypt(encrypted_message, timestamp)

# File encryption/decryption (system time)
encrypted_file = kaalka.encrypt("data.txt")        # Produces data.kaalka (not data.txt.kaalka)
decrypted_file = kaalka.decrypt(encrypted_file)     # Produces data.txt

# File encryption/decryption (explicit time)
encrypted_file = kaalka.encrypt("data.txt", timestamp)
decrypted_file = kaalka.decrypt(encrypted_file, timestamp)

Note:

  • Encrypted files use only the .kaalka extension (e.g., data.kaalka, not data.txt.kaalka).
  • Decrypted files restore the original name and extension (e.g., data.txt).

KaalkaNTP Usage

from kaalkaNTP import KaalkaNTP

kaalka_ntp = KaalkaNTP()
# Use KaalkaNTP methods for NTP-based encryption

📂 File Structure

Kaalka-Encryption-Algorithm/
|-- kaalka/
|   |-- file_encryptor.py
|   |-- kaalka.py
|   |-- __init__.py
|   |-- __pycache__/
|-- kaalkaNTP/
|   |-- kaalkaNTP.py
|   |-- packet.py
|   |-- __init__.py
|-- build/
|   |-- lib/
|       |-- kaalka/
|       |-- kaalkaNTP/
|-- dist/
|-- kaalka.egg-info/
|-- LICENSE
|-- README.md
|-- requirements.txt
|-- setup.py
|-- .github/
|   |-- workflows/
|       |-- python-package.yml
|-- .git/

⚠️ Security Notes

  • If you do not provide a timestamp, the current system time is used for encryption and decryption. Encryption and decryption must occur at the same second for the result to be correct.
  • For reproducibility and secure communication, always provide an explicit timestamp string (format: 'HH:MM:SS').
  • The strength of encryption depends on the secrecy and unpredictability of the timestamp used.

📄 License

See the LICENSE file for details.

🤝 Contributing

Contributions, bug reports, and feature requests are welcome! Please open an issue or submit a pull request on GitHub.

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

kaalka-3.0.tar.gz (17.7 kB view details)

Uploaded Source

Built Distribution

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

kaalka-3.0-py3-none-any.whl (19.7 kB view details)

Uploaded Python 3

File details

Details for the file kaalka-3.0.tar.gz.

File metadata

  • Download URL: kaalka-3.0.tar.gz
  • Upload date:
  • Size: 17.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for kaalka-3.0.tar.gz
Algorithm Hash digest
SHA256 2d8beb6ad24a3af1d4bfec4076b7c4279c562863fc48bdbd41d403b60aaffe02
MD5 764b88e849a7cbdd4923398abae9b656
BLAKE2b-256 3b506a3a7b12fb68802f5cc06561270db9d79ee9aadaea97b1c20c3c4899ac18

See more details on using hashes here.

File details

Details for the file kaalka-3.0-py3-none-any.whl.

File metadata

  • Download URL: kaalka-3.0-py3-none-any.whl
  • Upload date:
  • Size: 19.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for kaalka-3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 66a29d7a16e465aa32da1873e0754b5a67daeafea6de2ed3e0484ccd50cc7bcc
MD5 6a775a62883c88b1a1f8bd97c52b564c
BLAKE2b-256 964824f3230114a6b451de3a53c875dc015b1a36aaa71113ad7dcde4fd7cb6ea

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