{"adoption": {"forks": 470, "observed_at": "2026-08-28T04:08:22.075954+00:00", "stars": 3824}, "canonical_url": "https://ross.abutalabs.com/products/practical-cryptography-for-developers-book", "card": {"archived": false, "artifact_type": "learning-resource", "description": "Practical Cryptography for Developers: Hashes, MAC, Key Derivation, DHKE, Symmetric and Asymmetric Ciphers, Public Key Cryptosystems, RSA, Elliptic Curves, ECC, secp256k1, ECDH, ECIES, Digital Signatures, ECDSA, EdDSA", "domain": ["security", "developer-tools", "tutorials", "education"], "enriched": true, "function": ["cryptography", "security", "documentation", "developer-tools"], "health_score": 20, "homepage": "https://cryptobook.nakov.com", "language": "CSS", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["nakov/Practical-Cryptography-for-Developers-Book"], "name": "nakov/Practical-Cryptography-for-Developers-Book", "platform": ["cross-platform", "python"], "pushed_at": "2024-06-07T09:01:50+00:00", "repo": "nakov/Practical-Cryptography-for-Developers-Book", "stars": 3824, "tags": ["cryptography", "book", "tutorial", "hashes", "hmac", "key-derivation", "aes", "ecc", "ecdsa", "digital-signatures", "quantum-safe-cryptography", "free-book", "web-server"], "topics": ["cryptography", "tutorial", "book", "programming", "elliptic-curves", "ecdh", "aes", "digital-signature", "asymmetric-ciphers", "public-key-cryptography", "quantum-safe-cryptography", "hashes", "kdf", "hmac", "key-agreement", "python", "elliptic-curves-cryptography", "ecc"], "urls": [], "use_cases": ["learn how AES-GCM and authenticated encryption work", "understand elliptic curve cryptography and ECDH key exchange", "learn how ECDSA and EdDSA digital signatures work", "understand password hashing and key derivation functions like Argon2", "get an introduction to quantum-safe cryptography", "find cryptography libraries and code examples for Python and other languages"], "what_it_is": "A free, open-source book by Svetlin Nakov teaching practical cryptography for developers, covering hashes, MACs, key derivation, key exchange, symmetric and asymmetric ciphers, ECC, digital signatures, and quantum-safe cryptography with code examples. It is hosted online via GitBook and written primarily in Python examples.", "when_to_avoid": ["you need a formal mathematical cryptography textbook", "you need a finished, complete reference - the book is still unfinished", "you need a crypto library to use in production rather than learning material"], "when_to_choose": ["you are a developer wanting a practical, code-driven introduction to cryptography concepts", "you need a free reference explaining hashes, MACs, KDFs, ciphers, and signatures", "you want worked examples in Python before using crypto libraries"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/practical-cryptography-for-developers-book", "repo": "nakov/Practical-Cryptography-for-Developers-Book", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:22.075954+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:26:23.105447+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8cd509b3970820dd260a28e918a8f347e1739f4c8e11090bf5c40fb4e6c980f5", "fetched_at": "2026-08-28T04:08:22.075954+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nakov/Practical-Cryptography-for-Developers-Book"}, {"content_hash": "a38b5af7c534a1838042239a4dbc23dffe9f99dd6a37f2b18c0d8ef8b26eabda", "fetched_at": "2026-08-29T09:21:04.536010+00:00", "kind": "homepage", "missing": false, "url": "https://cryptobook.nakov.com"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:22.075954+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:26:23.105447+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8cd509b3970820dd260a28e918a8f347e1739f4c8e11090bf5c40fb4e6c980f5", "fetched_at": "2026-08-28T04:08:22.075954+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nakov/Practical-Cryptography-for-Developers-Book"}, {"content_hash": "a38b5af7c534a1838042239a4dbc23dffe9f99dd6a37f2b18c0d8ef8b26eabda", "fetched_at": "2026-08-29T09:21:04.536010+00:00", "kind": "homepage", "missing": false, "url": "https://cryptobook.nakov.com"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:26:23.105447+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8cd509b3970820dd260a28e918a8f347e1739f4c8e11090bf5c40fb4e6c980f5", "fetched_at": "2026-08-28T04:08:22.075954+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nakov/Practical-Cryptography-for-Developers-Book"}, {"content_hash": "a38b5af7c534a1838042239a4dbc23dffe9f99dd6a37f2b18c0d8ef8b26eabda", "fetched_at": "2026-08-29T09:21:04.536010+00:00", "kind": "homepage", "missing": false, "url": "https://cryptobook.nakov.com"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:08:22.075954+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:22.075954+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:22.075954+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:26:23.105447+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8cd509b3970820dd260a28e918a8f347e1739f4c8e11090bf5c40fb4e6c980f5", "fetched_at": "2026-08-28T04:08:22.075954+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nakov/Practical-Cryptography-for-Developers-Book"}, {"content_hash": "a38b5af7c534a1838042239a4dbc23dffe9f99dd6a37f2b18c0d8ef8b26eabda", "fetched_at": "2026-08-29T09:21:04.536010+00:00", "kind": "homepage", "missing": false, "url": "https://cryptobook.nakov.com"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:22.075954+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:22.075954+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:26:23.105447+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8cd509b3970820dd260a28e918a8f347e1739f4c8e11090bf5c40fb4e6c980f5", "fetched_at": "2026-08-28T04:08:22.075954+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nakov/Practical-Cryptography-for-Developers-Book"}, {"content_hash": "a38b5af7c534a1838042239a4dbc23dffe9f99dd6a37f2b18c0d8ef8b26eabda", "fetched_at": "2026-08-29T09:21:04.536010+00:00", "kind": "homepage", "missing": false, "url": "https://cryptobook.nakov.com"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:22.075954+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:22.075954+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:22.075954+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:26:23.105447+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8cd509b3970820dd260a28e918a8f347e1739f4c8e11090bf5c40fb4e6c980f5", "fetched_at": "2026-08-28T04:08:22.075954+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nakov/Practical-Cryptography-for-Developers-Book"}, {"content_hash": "a38b5af7c534a1838042239a4dbc23dffe9f99dd6a37f2b18c0d8ef8b26eabda", "fetched_at": "2026-08-29T09:21:04.536010+00:00", "kind": "homepage", "missing": false, "url": "https://cryptobook.nakov.com"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:22.075954+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:22.075954+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:26:23.105447+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8cd509b3970820dd260a28e918a8f347e1739f4c8e11090bf5c40fb4e6c980f5", "fetched_at": "2026-08-28T04:08:22.075954+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nakov/Practical-Cryptography-for-Developers-Book"}, {"content_hash": "a38b5af7c534a1838042239a4dbc23dffe9f99dd6a37f2b18c0d8ef8b26eabda", "fetched_at": "2026-08-29T09:21:04.536010+00:00", "kind": "homepage", "missing": false, "url": "https://cryptobook.nakov.com"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:26:23.105447+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8cd509b3970820dd260a28e918a8f347e1739f4c8e11090bf5c40fb4e6c980f5", "fetched_at": "2026-08-28T04:08:22.075954+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nakov/Practical-Cryptography-for-Developers-Book"}, {"content_hash": "a38b5af7c534a1838042239a4dbc23dffe9f99dd6a37f2b18c0d8ef8b26eabda", "fetched_at": "2026-08-29T09:21:04.536010+00:00", "kind": "homepage", "missing": false, "url": "https://cryptobook.nakov.com"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:26:23.105447+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8cd509b3970820dd260a28e918a8f347e1739f4c8e11090bf5c40fb4e6c980f5", "fetched_at": "2026-08-28T04:08:22.075954+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nakov/Practical-Cryptography-for-Developers-Book"}, {"content_hash": "a38b5af7c534a1838042239a4dbc23dffe9f99dd6a37f2b18c0d8ef8b26eabda", "fetched_at": "2026-08-29T09:21:04.536010+00:00", "kind": "homepage", "missing": false, "url": "https://cryptobook.nakov.com"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:26:23.105447+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8cd509b3970820dd260a28e918a8f347e1739f4c8e11090bf5c40fb4e6c980f5", "fetched_at": "2026-08-28T04:08:22.075954+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nakov/Practical-Cryptography-for-Developers-Book"}, {"content_hash": "a38b5af7c534a1838042239a4dbc23dffe9f99dd6a37f2b18c0d8ef8b26eabda", "fetched_at": "2026-08-29T09:21:04.536010+00:00", "kind": "homepage", "missing": false, "url": "https://cryptobook.nakov.com"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2869, "days_push": 817, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}