{"id":16658553,"url":"https://github.com/mveytsman/cryptopals","last_synced_at":"2026-05-18T07:32:53.210Z","repository":{"id":66661896,"uuid":"481854460","full_name":"mveytsman/cryptopals","owner":"mveytsman","description":"Doing cryptopals in Elixir LiveBook","archived":false,"fork":false,"pushed_at":"2022-04-21T09:09:34.000Z","size":44,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-12T19:45:46.627Z","etag":null,"topics":["cryptography","cryptopals-crypto-challenges","elixir","livebook"],"latest_commit_sha":null,"homepage":"","language":"Nix","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mveytsman.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2022-04-15T06:01:53.000Z","updated_at":"2025-01-10T23:45:12.000Z","dependencies_parsed_at":"2023-02-21T12:15:23.144Z","dependency_job_id":null,"html_url":"https://github.com/mveytsman/cryptopals","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mveytsman/cryptopals","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mveytsman%2Fcryptopals","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mveytsman%2Fcryptopals/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mveytsman%2Fcryptopals/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mveytsman%2Fcryptopals/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mveytsman","download_url":"https://codeload.github.com/mveytsman/cryptopals/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mveytsman%2Fcryptopals/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33169239,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-18T05:43:36.989Z","status":"ssl_error","status_checked_at":"2026-05-18T05:43:19.133Z","response_time":71,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["cryptography","cryptopals-crypto-challenges","elixir","livebook"],"created_at":"2024-10-12T10:05:54.954Z","updated_at":"2026-05-18T07:32:53.194Z","avatar_url":"https://github.com/mveytsman.png","language":"Nix","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Cryptopals (in LiveBook!)\n\n## Introduction\n\nAh... [cryptopals](https://cryptopals.com/)! See this [comment](https://news.ycombinator.com/item?id=23392365) by tptacek for a rundown of their history. Hard to believe these have been kicking around for 10+ years and I'm only now taking a serious crack at them.\n\n\u003e Bleichenbacher aside, though, really what you're seeing is a snapshot of *au courant* crypto attacks from 2010. Away from the libsodium world we live in now, CBC and unauthenticated encryption were quite common, and you still had to convince developers to fix them.\n\nI suspect Elixir/LiveBook is a **killer** combination for doing cryptopals in, and this is my attempt to prove this to myself.\n\nWhy do I think this?\n\n1. [LiveBook](https://livebook.dev/) is a joy to work with! You can get a feel for what's possible by watching Jose Valim's [Advent of Code livestreams](https://www.twitch.tv/josevalim/videos). It's what made me want to take on a project like this.\n2. [Binary pattern matching](https://hexdocs.pm/elixir/1.13/Kernel.SpecialForms.html#%3C%3C%3E%3E/1). The `\u003c\u003c\u003e\u003e` special form is extrememly powerful, and a lot of the complexity of the bit/byte fiddling crypto attacks require becomes extremely elegant with it.\n3. [Erlang's crypto library](https://www.erlang.org/doc/man/crypto.html). Erlang's crypto library is old and has a lot of warts, but for this purpose they are features (see comment above).\n4. Bignums by default.\n\nHopefully, I'll learn some crypto engineering along the way.\n\n## Table of Contents\n\n* [Set 1: Basics](./set1.livemd) \n    \n    [![Run in Livebook](https://livebook.dev/badge/v1/gray.svg)](https://livebook.dev/run?url=https%3A%2F%2Fgithub.com%2Fmveytsman%2Fcryptopals%2Fblob%2Fmain%2Fset1.livemd)\n* [Set 2: Block crypto](./set2.livemd)\n\n    [![Run in Livebook](https://livebook.dev/badge/v1/gray.svg)](https://livebook.dev/run?url=https%3A%2F%2Fgithub.com%2Fmveytsman%2Fcryptopals%2Fblob%2Fmain%2Fset2.livemd)\n* [Set 3: Block \u0026 stream crypto](./set3.livemd)\n\n     [![Run in Livebook](https://livebook.dev/badge/v1/gray.svg)](https://livebook.dev/run?url=https%3A%2F%2Fgithub.com%2Fmveytsman%2Fcryptopals%2Fblob%2Fmain%2Fset3.livemd)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmveytsman%2Fcryptopals","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmveytsman%2Fcryptopals","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmveytsman%2Fcryptopals/lists"}