Skip to main content

Telegram Crypto Library for Pyrogram

Project description

TgCrypto

Telegram Crypto Library for Pyrogram

Table of Contents

About

TgCrypto is a high-performance, easy-to-install Telegram Crypto Library specifically written in C for Pyrogram [1] as a Python extension. TgCrypto is a replacement for the much slower PyAES and implements the crypto algorithms Telegram requires, namely AES-IGE 256 bit (used in MTProto v2.0) and AES-CTR 256 bit (used for CDN encrypted files).

Installation

$ pip install --upgrade tgcrypto

Note: Being a C extension for Python, TgCrypto is an optional but highly recommended dependency; when TgCrypto is not detected in your system, Pyrogram will automatically fall back to PyAES and will show you a warning.

The reason about being an optional package is that TgCrypto requires some extra system tools in order to be compiled. The errors you receive when trying to install TgCrypto are system dependent, but also descriptive enough to understand what you should do next:

  • Windows: Install Visual C++ 2015 Build Tools.

  • macOS: A pop-up will automatically ask you to install the command line developer tools.

  • Linux: Install a proper C compiler (gcc, clang) and the Python header files (python3-dev).

  • Termux (Android): Install clang and python-dev packages.

API

TgCrypto API consists of these four functions:

def ige_encrypt(data: bytes, key: bytes, iv: bytes) -> bytes:
def ige_decrypt(data: bytes, key: bytes, iv: bytes) -> bytes:
def ctr_encrypt(data: bytes, key: bytes, iv: bytes) -> bytes:
def ctr_decrypt(data: bytes, key: bytes, iv: bytes) -> bytes:

Usage

TgCrypto is as simple as this example:

import os
import tgcrypto

data = os.urandom(10 * 1024 * 1024)  # 10 MB of random data
key = os.urandom(32)  # Random Key
iv = os.urandom(32)  # Random IV

ige_encrypted = tgcrypto.ige_encrypt(data, key, iv)
ige_decrypted = tgcrypto.ige_decrypt(ige_encrypted, key, iv)

assert data == ige_decrypted

Contribution

You are very welcome to contribute by either submitting pull requests or reporting issues/bugs as well as suggesting best practices, ideas, enhancements on both code and documentation. Any help is appreciated!

Feedback

Means for getting in touch:

License


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

TgCrypto-1.0.1.tar.gz (27.6 kB view details)

Uploaded Source

File details

Details for the file TgCrypto-1.0.1.tar.gz.

File metadata

  • Download URL: TgCrypto-1.0.1.tar.gz
  • Upload date:
  • Size: 27.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for TgCrypto-1.0.1.tar.gz
Algorithm Hash digest
SHA256 fc3c42d64c86856e6ad36a6359354866082a4b5c7e2a7a5affe5098c8c9cffaf
MD5 823e830bb89002221be23a454896b3e0
BLAKE2b-256 88a030b1311337b14878a61805ceb0fa80677ff2e01b9fb231a628607f217f5c

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