{"id":27026863,"url":"https://github.com/serengil/crypto","last_synced_at":"2025-04-04T23:16:13.676Z","repository":{"id":43478408,"uuid":"56991123","full_name":"serengil/crypto","owner":"serengil","description":"Elliptic Curve Cryptography and Common Public Key Cryptography Implementations","archived":false,"fork":false,"pushed_at":"2025-03-31T11:35:51.000Z","size":269,"stargazers_count":98,"open_issues_count":0,"forks_count":49,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-03-31T12:31:35.564Z","etag":null,"topics":["bitcoin","crypto","diffie-hellman","digital-signature","discrete-logarithm","dsa","ecdsa","eddsa","edwards-curve","elgamal","elliptic-curve-cryptography","encryption","homomorphic","key-exchange","public-key","public-key-cryptography","rsa"],"latest_commit_sha":null,"homepage":"https://www.youtube.com/playlist?list=PLsS_1RYmYQQFPOGVFo_hiSkxC0mEOejku","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/serengil.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"github":"serengil","patreon":"serengil?repo=crypto"}},"created_at":"2016-04-24T19:50:12.000Z","updated_at":"2025-03-31T11:35:54.000Z","dependencies_parsed_at":"2025-03-31T12:36:11.523Z","dependency_job_id":null,"html_url":"https://github.com/serengil/crypto","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/serengil%2Fcrypto","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/serengil%2Fcrypto/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/serengil%2Fcrypto/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/serengil%2Fcrypto/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/serengil","download_url":"https://codeload.github.com/serengil/crypto/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247261594,"owners_count":20910108,"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":["bitcoin","crypto","diffie-hellman","digital-signature","discrete-logarithm","dsa","ecdsa","eddsa","edwards-curve","elgamal","elliptic-curve-cryptography","encryption","homomorphic","key-exchange","public-key","public-key-cryptography","rsa"],"created_at":"2025-04-04T23:16:13.220Z","updated_at":"2025-04-04T23:16:13.669Z","avatar_url":"https://github.com/serengil.png","language":"Jupyter Notebook","funding_links":["https://github.com/sponsors/serengil","https://patreon.com/serengil?repo=crypto","https://www.patreon.com/serengil?repo=crypto"],"categories":[],"sub_categories":[],"readme":"# crypto\n\n[![Stars](https://img.shields.io/github/stars/serengil/crypto?color=yellow\u0026style=flat)](https://github.com/serengil/crypto/stargazers)\n[![License](http://img.shields.io/:license-MIT-green.svg?style=flat)](https://github.com/serengil/crypto/blob/master/LICENSE)\n[![Patreon](https://img.shields.io/:become-patron-f96854.svg?style=flat\u0026logo=patreon)](https://www.patreon.com/serengil?repo=crypto)\n[![GitHub Sponsors](https://img.shields.io/github/sponsors/serengil?logo=GitHub\u0026color=lightgray)](https://github.com/sponsors/serengil)\n\n[![Blog](https://img.shields.io/:blog-sefiks.com-blue.svg?style=flat\u0026logo=wordpress)](https://sefiks.com)\n[![YouTube](https://img.shields.io/:youtube-@sefiks-red.svg?style=flat\u0026logo=youtube)](https://www.youtube.com/@sefiks?sub_confirmation=1)\n[![Twitter](https://img.shields.io/:follow-@serengil-blue.svg?style=flat\u0026logo=twitter)](https://twitter.com/intent/user?screen_name=serengil)\n\nThis repository covers cryptography algorithms, tutorials and python implementations.\n\n## Public Key Cryptography\n\n1- Diffie-Hellman Key Exchange [`Code`](https://github.com/serengil/crypto/blob/master/python/notebooks/Diffie-Hellman.ipynb), [`Tutorial`](https://sefiks.com/2023/05/30/magic-of-diffie-hellman-from-a-programmers-perspective/), [`Video`](https://youtu.be/VzzCDO-o2Fc)\n\n2- Digital Signature Algorithm (DSA) [`Code`](https://github.com/serengil/crypto/blob/master/python/notebooks/DSA.ipynb), [`Tutorial`](https://sefiks.com/2023/06/14/digital-signature-algorithm-dsa-in-python-from-scratch/), `Video`\n\n## Homomorphic Encryption\n\n1- Multiplicatively Homomorphic RSA [`Code`](https://github.com/serengil/crypto/blob/master/python/homomorphic/RSA.ipynb), [`Tutorial`](https://sefiks.com/2023/03/06/a-step-by-step-partially-homomorphic-encryption-example-with-rsa-in-python/), [`Video`](https://youtu.be/PzKch8UQAmQ)\n\n2- Multiplicatively or Additively Homomorphic ElGamal [`Code`](https://github.com/serengil/crypto/blob/master/python/homomorphic/ElGamal.ipynb), [`Tutorial`](https://sefiks.com/2023/03/27/a-step-by-step-partially-homomorphic-encryption-example-with-elgamal-in-python/), [`Video`](https://youtu.be/d-gK211N28U)\n\n3- Additively Homomorphic Paillier [`Code`](https://github.com/serengil/crypto/blob/master/python/homomorphic/Paillier.ipynb), [`Tutorial`](https://sefiks.com/2023/04/03/a-step-by-step-partially-homomorphic-encryption-example-with-paillier-in-python/), [`Video`](https://youtu.be/Yerhc9B2zjQ), [`Video`](https://youtu.be/Yerhc9B2zjQ)\n\n4- Additively Homomorphic Okamoto–Uchiyama [`Code`](https://github.com/serengil/crypto/blob/master/python/homomorphic/Okamoto%E2%80%93Uchiyama.ipynb), [`Tutorial`](https://sefiks.com/2023/10/20/a-step-by-step-partially-homomorphic-encryption-example-with-okamoto-uchiyama-in-python/), `Video`\n\n5- Additively Homomorphic Benaloh [`Code`](https://github.com/serengil/crypto/blob/master/python/homomorphic/Benaloh.ipynb), [`Tutorial`](https://sefiks.com/2023/10/06/a-step-by-step-partially-homomorphic-encryption-example-with-benaloh-in-python-from-scratch/), `Video`\n\n6- Additively Homomorphic Damgard-Jurik [`Code`](https://github.com/serengil/crypto/blob/master/python/homomorphic/Damgard-Jurik.ipynb), [`Tutorial`](https://sefiks.com/2023/10/20/a-step-by-step-partially-homomorphic-encryption-example-with-damgard-jurik-in-python/), `Video`\n\n7- Additively Homomorphic Naccache–Stern [`Code`](https://github.com/serengil/crypto/blob/master/python/homomorphic/Naccache%E2%80%93Stern.ipynb), [`Tutorial`](https://sefiks.com/2023/10/26/a-step-by-step-partially-homomorphic-encryption-example-with-naccache-stern-in-python/), `Video`\n\n8- Additively Homomorphic Elliptic Curve ElGamal [`Code`](https://github.com/serengil/crypto/blob/master/python/notebooks/EC-ElGamal.ipynb), [`Tutorial`](https://sefiks.com/2018/08/21/elliptic-curve-elgamal-encryption/), [`Video`](https://youtu.be/062ilU5dOzY)\n\n9- Exclusively Homomorphic Goldwasser–Micali [`Code`](https://github.com/serengil/crypto/blob/master/python/homomorphic/Goldwasser%E2%80%93Micali.ipynb), [`Tutorial`](https://sefiks.com/2023/10/27/a-step-by-step-partially-homomorphic-encryption-example-with-goldwasser-micali-in-python/), `Video`\n\n\n## Elliptic Curve Cryptography Theory\n\n1- Elliptic Curves in Weierstrass Form [`Tutorial`](https://sefiks.com/2016/03/13/the-math-behind-elliptic-curve-cryptography/), [`Video`](https://youtu.be/iydGkrjJkSM)\n\n2- Elliptic Curves in Koblitz Form [`Tutorial`](https://sefiks.com/2016/03/13/the-math-behind-elliptic-curves-over-binary-field/), [`Video`](https://youtu.be/g8ePU5U5oP8)\n\n3- Edwards Curves [`Tutorial`](https://sefiks.com/2018/12/19/a-gentle-introduction-to-edwards-curves/), [`Video`](https://youtu.be/Yn1kD1rNmns)\n\n4- Twisted Edwards Curves [`Tutorial`](https://sefiks.com/2018/12/26/twisted-edwards-curves/), `Video`\n\n5- Double and Add Method [`Tutorial`](https://sefiks.com/2016/03/27/double-and-add-method/), `Video`\n\n## Elliptic Curve Cryptography Implementations\n\n1- Elliptic Curve Diffie-Hellman Key Exchange (ECDH) [`Code`](https://github.com/serengil/crypto/blob/master/python/notebooks/ECDH.ipynb), [`Tutorial`](https://sefiks.com/2016/04/11/key-exchange-from-carrying-handcuffed-briefcases-to-modern-cryptosystems/), [`Video`](https://youtu.be/445Opx6U3Co)\n\n2- Elliptic Curve Digital Signature Algorithm (ECDSA) [`Code`](https://github.com/serengil/crypto/blob/master/python/notebooks/ECDSA.ipynb), [`Tutorial`](https://sefiks.com/2018/02/16/elegant-signatures-with-elliptic-curve-cryptography/), [`Video`](https://youtu.be/Br8o9KnyPJI)\n\n3- Edwards Curve Digital Signature Algorithn (EdDSA) [`Code`](https://github.com/serengil/crypto/blob/master/python/notebooks/EdDSA.ipynb), [`Tutorial`](https://sefiks.com/2018/12/24/a-gentle-introduction-to-edwards-curve-digital-signature-algorithm-eddsa/), [`Video`](https://youtu.be/8TnRzFt3-K0)\n\n4- Elliptic Curve ElGamal Asymmetric Encryption [`Code`](https://github.com/serengil/crypto/blob/master/python/notebooks/EC-ElGamal.ipynb), [`Tutorial`](https://sefiks.com/2018/08/21/elliptic-curve-elgamal-encryption/), [`Video`](https://youtu.be/062ilU5dOzY)\n\n5- Elliptic Curve Integrated Encryption Scheme (ECIES) [`Code`](https://github.com/serengil/crypto/blob/master/python/notebooks/ECIES.ipynb), [`Tutorial`](https://sefiks.com/2023/04/27/elliptic-curve-integrated-encryption-scheme-in-python/), [`Video`](https://youtu.be/0hTFoVOeJi0)\n\n6- Elliptic Curve Menezes-Qu-Vanstone (ECMQV) [`Code`](https://github.com/serengil/crypto/blob/master/python/notebooks/ECMQV.ipynb), [`Tutorial`](https://sefiks.com/2023/05/29/elliptic-curve-menezes-qu-vanstone-in-python-from-scratch/), [`Video`](https://youtu.be/JKlTdY07IY4)\n\n7- Elliptic Curve Korean Certificate-based Digital Signature Algorithm (EC-KCDSA) [`Code`](https://github.com/serengil/crypto/blob/master/python/notebooks/EC-KCDSA.ipynb), [`Tutorial`](https://sefiks.com/2023/06/09/elliptic-curve-kcdsa-in-python-from-scratch/), `Video`\n\n8- Bitcoin Address Generation [`Code`](https://github.com/serengil/crypto/blob/master/python/Bitcoin.py), [`Tutorial`](https://sefiks.com/2018/03/26/a-step-by-step-bitcoin-address-example/), [`Video`](https://youtu.be/3n93_yiWH0I)\n\n## Historical Cryptography\n\n1- Caesar Cipher [`Code`](https://github.com/serengil/crypto/blob/master/python/classical/Caesar.ipynb)\n\n2- Substitution Cipher [`Code`](https://github.com/serengil/crypto/blob/master/python/classical/Substitution.ipynb)\n\n3- Affine Cipher [`Code`](https://github.com/serengil/crypto/blob/master/python/classical/Affine.ipynb)\n\n4- Homophonic Substitution Cipher [`Code`](https://github.com/serengil/crypto/blob/master/python/classical/Homophonic.ipynb)\n\n5- Permutation Cipher [`Code`](https://github.com/serengil/crypto/blob/master/python/classical/Permutation.ipynb)\n\n6- Hill Cipher [`Code`](https://github.com/serengil/crypto/blob/master/python/classical/Hill.ipynb), [`Tutorial`](https://sefiks.com/2018/12/04/a-step-by-step-hill-cipher-example/)\n\n7- Vigénere Cipher [`Code`](https://github.com/serengil/crypto/blob/master/python/classical/Vigenere.ipynb)\n\n8- Kasiski Examination [`Code`](https://github.com/serengil/crypto/blob/master/python/classical/Kasiski.ipynb)\n\n9- Enigma Machine [`Video`](https://youtu.be/XPd8LCxwrsc)\n\n# Support\n\nThere are many ways to support a project - starring⭐ the GitHub repos is one.\n\nYou can also enroll one of my courses published on Udemy to support: [`Public Key Cryptography From Scratch In Python`](https://www.udemy.com/course/public-key-cryptography-from-scratch-in-python/?referralCode=8AF2BB504D810A4C99CB), [`Cryptography Basics From Scratch In Python`](https://www.udemy.com/course/cryptography-basics-from-scratch-in-python/?referralCode=0B65C57251E2674FAC2C), [`Elliptic Curve Cryptography Masterclass In Java`](https://www.udemy.com/course/elliptic-curve-cryptography-masterclass/?referralCode=C5E74D486DD29F6DAF4A).\n\nYou can support this work on [Patreon](https://www.patreon.com/serengil?repo=crypto) or [GitHub Sponsors](https://github.com/sponsors/serengil).\n\n\u003ca href=\"https://www.patreon.com/serengil?repo=crypto\"\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/serengil/deepface/master/icon/patreon.png\" width=\"30%\" height=\"30%\"\u003e\n\u003c/a\u003e\n\n# License\n\nThis repository is licensed under MIT license - see [`LICENSE`](https://github.com/serengil/crypto/blob/master/LICENSE) for more details\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fserengil%2Fcrypto","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fserengil%2Fcrypto","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fserengil%2Fcrypto/lists"}