{"id":21534823,"url":"https://github.com/netinvent/cryptidy","last_synced_at":"2026-03-16T10:34:23.321Z","repository":{"id":37739587,"uuid":"328918157","full_name":"netinvent/cryptidy","owner":"netinvent","description":"Easy but secure AES \u0026 RSA encryption / decryption","archived":false,"fork":false,"pushed_at":"2025-01-04T07:49:56.000Z","size":138,"stargazers_count":1,"open_issues_count":1,"forks_count":3,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-03T02:06:04.285Z","etag":null,"topics":["aes","asymmetric-cryptography","decryption","encryption","end-to-end-encryption","pycryptodome","rsa-cryptography","secure","symmetric-key-cryptography"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/netinvent.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-01-12T08:20:47.000Z","updated_at":"2025-01-04T07:50:00.000Z","dependencies_parsed_at":"2024-10-20T17:55:20.680Z","dependency_job_id":null,"html_url":"https://github.com/netinvent/cryptidy","commit_stats":{"total_commits":71,"total_committers":1,"mean_commits":71.0,"dds":0.0,"last_synced_commit":"876a96d2aac091430965a6f4b39660b268ce9a74"},"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netinvent%2Fcryptidy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netinvent%2Fcryptidy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netinvent%2Fcryptidy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netinvent%2Fcryptidy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/netinvent","download_url":"https://codeload.github.com/netinvent/cryptidy/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247828793,"owners_count":21002975,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aes","asymmetric-cryptography","decryption","encryption","end-to-end-encryption","pycryptodome","rsa-cryptography","secure","symmetric-key-cryptography"],"created_at":"2024-11-24T03:12:47.233Z","updated_at":"2026-03-16T10:34:23.263Z","avatar_url":"https://github.com/netinvent.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# cryptidy\n## Python high level library for symmetric \u0026 asymmetric encryption\n\n[![License](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause)\n[![Percentage of issues still open](http://isitmaintained.com/badge/open/netinvent/cryptidy.svg)](http://isitmaintained.com/project/netinvent/Cryptidy \"Percentage of issues still open\")\n[![Maintainability](https://api.codeclimate.com/v1/badges/be5d6edea1288951dc07/maintainability)](https://codeclimate.com/github/netinvent/cryptidy/maintainability)\n[![codecov](https://codecov.io/gh/netinvent/cryptidy/branch/master/graph/badge.svg?token=E5D9oVnqj7)](https://codecov.io/gh/netinvent/cryptidy)\n[![linux-tests](https://github.com/netinvent/cryptidy/actions/workflows/linux.yaml/badge.svg)](https://github.com/netinvent/cryptidy/actions/workflows/linux.yaml)\n[![windows-tests](https://github.com/netinvent/cryptidy/actions/workflows/windows.yaml/badge.svg)](https://github.com/netinvent/cryptidy/actions/workflows/windows.yaml)\n[![GitHub Release](https://img.shields.io/github/release/netinvent/cryptidy.svg?label=Latest)](https://github.com/netinvent/cryptidy/releases/latest)\n\nThis library has been written to make encryption / decryption of any python object as simple as possible, while keeping the encryption solution secure.\nIt is based on pycryptodomex AES and RSA encrpytion implementations.\n\nIt's main features are:\n - Encrypt any pickable Python object / variable / blob\n - Add an UTC timestamp to the encrypted message\n - Verify that decrypted messages timestamps aren't in the future or too old (for bad RTC clock diags)\n - Allow symmetric encryption (AES-EAX mode)\n     - 128, 192 or 256 bits encryption\n - Allow asymmetric encryption (RSA encryption with SHA384 hash algorithm and above AES encryption)\n     - 1024, 2048 or 4096 bits RSA encryption with AES-256 session encryption\n - Provide the encypted data as base64 string for maximum portability between platforms and encodings\n - Unload AES key from memory as soon as possible to help prevent memory attacks\n\n# Setup\n\nCurrent cryptidy tests are Python 3.7 and up.  \nNevertheless, cryptidy v1.2.3 still runs on Python 2.7+ ;)\n\n\n`pip install cryptidy`\n\n\n# Symmetric encryption usage\n\n```\nfrom cryptidy import symmetric_encryption\n\nkey = symmetric_encryption.generate_key(32)  # 32 bytes == 256 bits\n\nsome_python_objects = ['foo', 'bar'], 'some long string', 12\nencrypted = symmetric_encryption.encrypt_message(some_python_objects, key)\ntimestamp, original_object = symmetric_encryption.decrypt_message(encrypted, key)\n```\n\n# Asymmetric encryption usage\n\n```\nfrom cryptidy import asymmetric_encryption\n\npriv_key, pub_key = asymmetric_encryption.generate_keys(2048)  # 2048 bits RSA key\n\nsome_python_objects = ['foo', 'bar'], 'some long string', 12\nencrypted = asymmetric_encryption.encrypt_message(some_python_objects, pub_key)\ntimestamp, original_object = asymmetric_encryption.decrypt_message(encrypted, priv_key)\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnetinvent%2Fcryptidy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnetinvent%2Fcryptidy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnetinvent%2Fcryptidy/lists"}