Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/timebertt/grypto
Understanding cryptographic algorithms by implementing them in Go :mortar_board:
https://github.com/timebertt/grypto
cryptography golang learning-by-doing learning-exercise
Last synced: about 2 months ago
JSON representation
Understanding cryptographic algorithms by implementing them in Go :mortar_board:
- Host: GitHub
- URL: https://github.com/timebertt/grypto
- Owner: timebertt
- License: apache-2.0
- Created: 2020-10-11T16:07:22.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2021-02-17T14:05:12.000Z (almost 4 years ago)
- Last Synced: 2024-04-18T04:52:36.937Z (9 months ago)
- Topics: cryptography, golang, learning-by-doing, learning-exercise
- Language: Go
- Homepage:
- Size: 116 KB
- Stars: 3
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# grypto :closed_lock_with_key::robot::man_technologist:
*Understanding cryptographic algorithms by implementing them in Go*
## Introduction :pencil:
**grypto** is a collection of cryptographic algorithms implemented in go.
It also contains a simple CLI that can be used to test and demonstrate the different algorithms implemented in the grypto library.
It 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:
If you want to get a deeper understanding of the basics of cryptography, maybe you will find this collection helpful. Enjoy! :nerd_face::book:
## :warning: WARNING! :warning:
**Please use this only for learning purposes!**
The 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.
## Using the CLI :computer:
You can try out grypto by downloading the CLI:
```
$ go get -u github.com/timebertt/grypto/grypto
```Encrypt some secret messages:
```
$ grypto caesar encrypt -K 3 -I "Caesar Cipher is old but not very secure"
Fdhvdu Flskhu lv rog exw qrw yhub vhfxuh
```See what else is possible with grypto:
```
$ grypto help
```Have fun! :tada:
## Algorithms implemented :gear:
- [Caesar Cipher](/caesar) (`grypto caesar`)
- [(Extended) Euclidean Algorithm](/euclid) (`grypto euclid`)
- [Modular Exponentiation](/modular/exponentiation.go) (`grypto exp`)
- [Discrete Logarithm (via Enumeration)](/modular/dlog.go) (`grypto dlog`)
- [Order of elements in residue system](/modular/order.go) (`grypto order`)
- [Subgroup generated by elements in residue system](/modular/subgroup.go) (`grypto subgroup`)More to come! :rocket:
## References :books:
Please see the following references further and deeper explanations on the implemented cryptographic algorithms:
- Johannes Buchmann: [Einfü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)
- Christof Paar, Jan Pelzl: [Kryptografie verstä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/