{"library":"pydes","title":"pyDes","description":"pyDes is a pure Python implementation of the DES and Triple-DES encryption algorithms. It is designed for portability across Python versions rather than performance, making it suitable for simple, small-scale encryption tasks. The current version, 2.0.1, was released on April 28, 2010, and the project is no longer actively maintained.","language":"python","status":"abandoned","last_verified":"Mon May 18","install":{"commands":["pip install pyDes"],"cli":null},"imports":["import pyDes\ndes_cipher = pyDes.des(key, mode, iv, pad, padmode)","import pyDes\ntdes_cipher = pyDes.triple_des(key, mode, iv, pad, padmode)"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import pyDes\n\n# For Python 3, all strings must be converted to bytes\n# For DES, key must be exactly 8 bytes\n# For Triple DES, key must be 16 or 24 bytes\n# IV (Initialization Vector) must be 8 bytes for CBC mode\n\nkey_des = b\"DESCRYPT\"\nkey_3des_2key = b\"0123456789ABCDEF\"\nkey_3des_3key = b\"0123456789ABCDEFabcdefgh\"\n\ndata = b\"Please encrypt my data. It needs to be padded.\"\n\n# --- Single DES Example (CBC mode, PKCS5 padding) ---\ntry:\n    # DES encryption object\n    k_des = pyDes.des(key_des, pyDes.CBC, b\"\\0\\0\\0\\0\\0\\0\\0\\0\", pad=None, padmode=pyDes.PAD_PKCS5)\n    encrypted_des = k_des.encrypt(data)\n    print(f\"Encrypted DES: {encrypted_des!r}\")\n    decrypted_des = k_des.decrypt(encrypted_des)\n    print(f\"Decrypted DES: {decrypted_des!r}\")\n    assert decrypted_des == data\nexcept ValueError as e:\n    print(f\"DES Error: {e}\")\n\n# --- Triple DES Example (2-Key, CBC mode, PKCS5 padding) ---\ntry:\n    # Triple DES encryption object (2-key)\n    k_3des_2key = pyDes.triple_des(key_3des_2key, pyDes.CBC, b\"\\0\\0\\0\\0\\0\\0\\0\\0\", pad=None, padmode=pyDes.PAD_PKCS5)\n    encrypted_3des_2key = k_3des_2key.encrypt(data)\n    print(f\"Encrypted 3DES (2-key): {encrypted_3des_2key!r}\")\n    decrypted_3des_2key = k_3des_2key.decrypt(encrypted_3des_2key)\n    print(f\"Decrypted 3DES (2-key): {decrypted_3des_2key!r}\")\n    assert decrypted_3des_2key == data\nexcept ValueError as e:\n    print(f\"3DES (2-key) Error: {e}\")\n\n# --- Triple DES Example (3-Key, ECB mode, PKCS5 padding) ---\ntry:\n    # Triple DES encryption object (3-key)\n    k_3des_3key = pyDes.triple_des(key_3des_3key, pyDes.ECB, pad=None, padmode=pyDes.PAD_PKCS5)\n    encrypted_3des_3key = k_3des_3key.encrypt(data)\n    print(f\"Encrypted 3DES (3-key): {encrypted_3des_3key!r}\")\n    decrypted_3des_3key = k_3des_3key.decrypt(encrypted_3des_3key)\n    print(f\"Decrypted 3DES (3-key): {decrypted_3des_3key!r}\")\n    assert decrypted_3des_3key == data\nexcept ValueError as e:\n    print(f\"3DES (3-key) Error: {e}\")","lang":"python","description":"This quickstart demonstrates basic DES and Triple DES encryption and decryption using pyDes. It highlights the necessity of using byte strings for keys, IVs, and data in Python 3, and the recommended practice of using PKCS5 padding. Separate examples are provided for DES and different Triple DES key lengths.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-18","installed_version":"2.0.1","pypi_latest":"2.0.1","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":2.3,"avg_import_s":0,"wheel_type":"sdist"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"pyDes","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0,"mem_mb":0.1,"disk_size":"19.2M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"pyDes","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":1.9,"import_time_s":0,"mem_mb":0.1,"disk_size":"20M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"pyDes","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0,"mem_mb":0.1,"disk_size":"21.6M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"pyDes","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":2,"import_time_s":0,"mem_mb":0.1,"disk_size":"22M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"pyDes","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0,"mem_mb":0.1,"disk_size":"11.6M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"pyDes","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":3,"import_time_s":0,"mem_mb":0.1,"disk_size":"12M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"pyDes","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0,"mem_mb":0.3,"disk_size":"11.3M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"pyDes","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":2.6,"import_time_s":0,"mem_mb":0.1,"disk_size":"12M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"pyDes","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0,"mem_mb":0.1,"disk_size":"18.8M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"pyDes","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"clean","install_time_s":2.2,"import_time_s":0,"mem_mb":0.1,"disk_size":"19M"}]}}