{"id":16479349,"url":"https://github.com/timebertt/grypto","last_synced_at":"2025-02-28T14:19:06.358Z","repository":{"id":119455312,"uuid":"303159558","full_name":"timebertt/grypto","owner":"timebertt","description":"Understanding cryptographic algorithms by implementing them in Go :mortar_board:","archived":false,"fork":false,"pushed_at":"2021-02-17T14:05:12.000Z","size":119,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-04-18T04:52:36.937Z","etag":null,"topics":["cryptography","golang","learning-by-doing","learning-exercise"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/timebertt.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":"2020-10-11T16:07:22.000Z","updated_at":"2024-06-19T06:48:00.401Z","dependencies_parsed_at":null,"dependency_job_id":"6ac0e4f8-784f-4831-9c91-dd18dfa27e3e","html_url":"https://github.com/timebertt/grypto","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/timebertt%2Fgrypto","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timebertt%2Fgrypto/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timebertt%2Fgrypto/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timebertt%2Fgrypto/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/timebertt","download_url":"https://codeload.github.com/timebertt/grypto/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241164398,"owners_count":19920569,"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":["cryptography","golang","learning-by-doing","learning-exercise"],"created_at":"2024-10-11T12:51:42.674Z","updated_at":"2025-02-28T14:19:06.337Z","avatar_url":"https://github.com/timebertt.png","language":"Go","readme":"# grypto :closed_lock_with_key::robot::man_technologist:\n\n*Understanding cryptographic algorithms by implementing them in Go*\n\n## Introduction :pencil:\n\n**grypto** is a collection of cryptographic algorithms implemented in go.\n\nIt also contains a simple CLI that can be used to test and demonstrate the different algorithms implemented in the grypto library.\n\nIt was implemented by Tim Ebert ([@timebertt](https://github.com/timebertt)) as a practical exercise to understand the fundamental mathematical concepts behind cryptographic algorithms that were discussed in a lecture on cryptography in his Computer Science Master studies. :mortar_board:\n\nIf you want to get a deeper understanding of the basics of cryptography, maybe you will find this collection helpful. Enjoy! :nerd_face::book:\n\n## :warning: WARNING! :warning:\n\n**Please use this only for learning purposes!**\n\nThe grypto library and CLI were build only to demonstrate and understand the basics of different cryptographic algorithms. There is no guarantee on correctness, security and quality of the implementation. The implementation might not be compatible with proper implementations of the different algorithms and might be vulnerable to attacks. Please use the respective official implementations of the Go standard library (see https://golang.org/pkg/crypto/) in your Go applications.\n\n## Using the CLI :computer:\n\nYou can try out grypto by downloading the CLI:\n```\n$ go get -u github.com/timebertt/grypto/grypto\n```\n\nEncrypt some secret messages:\n```\n$ grypto caesar encrypt -K 3 -I \"Caesar Cipher is old but not very secure\"\nFdhvdu Flskhu lv rog exw qrw yhub vhfxuh\n```\n\nSee what else is possible with grypto:\n```\n$ grypto help\n```\n\nHave fun! :tada:\n\n## Algorithms implemented :gear:\n\n- [Caesar Cipher](/caesar) (`grypto caesar`)\n- [(Extended) Euclidean Algorithm](/euclid) (`grypto euclid`)\n- [Modular Exponentiation](/modular/exponentiation.go) (`grypto exp`)\n- [Discrete Logarithm (via Enumeration)](/modular/dlog.go) (`grypto dlog`)\n- [Order of elements in residue system](/modular/order.go) (`grypto order`)\n- [Subgroup generated by elements in residue system](/modular/subgroup.go) (`grypto subgroup`)\n\nMore to come! :rocket:\n\n## References :books:\n\nPlease see the following references further and deeper explanations on the implemented cryptographic algorithms:\n\n- Johannes Buchmann: [Einführung in die Kryptographie](https://doi.org/10.1007/978-3-642-39775-2), [Introduction to Cryptography](https://doi.org/10.1007/978-1-4419-9003-7)\n- Christof Paar, Jan Pelzl: [Kryptografie verständlich](https://doi.org/10.1007/978-3-662-49297-0), [Understanding Cryptography](https://doi.org/10.1007/978-3-642-04101-3), http://crypto-textbook.com/\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimebertt%2Fgrypto","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftimebertt%2Fgrypto","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimebertt%2Fgrypto/lists"}