A simple, commented and readable python implementations of
Asymetric Encryption:
- Elgamal
- ECC (ECIES)
Symetric Encryption:
- AES
- Blowfish
- ChaCha
- Salsa
- XChaCha
- XSalsa
- DES
- 3DES
- TEA/XTEA
Hash Functions:
- Bcrypt
- Blake (Blake224, Blake256, Blake384, Blake512)
- Blake2 (Blake2b, Blake2s)
- Blake3 [TODO]
- Gimli
- MD2
- MD4
- MD5
- RC4
- RIPEMD-160
- SHA1
- SHA2 (SHA224, SHA256, SHA384, SHA512)
- SHA3 (SHA3-224, SHA3-256, SHA3-384, SHA3-512, SHAKE-128, SHAKE-256, Keccak-224, Keccak-256, Keccak-384, Keccak-512)
- XOODOO [TODO]
- Whirlpool [TODO]
- Rumba20 [TODO]
- SipHash [TODO]
Key Derivation:
- Argon2
- Double Ratchet
- HKDF
- PBKDF
- PBKDF2
- Scrypt
Message Authentication Cods:
- CMAC
- CBC Mac
- GMAC
- HMAC
- Poly1305
Signatures:
- DSA
- ECDSA
- EdDSA
Key Exchange:
- DH
- ECDH
- x3DH
While these should not be used in real world applications. Hopefully the simple implimenation and comments should let people under stand the flow of the program and how each of the implimenations work.
@oiidmnk for bringing the MD2 RFC Eratta to my attention and making the Pull Request. https://www.rfc-editor.org/errata/eid555
These Implimenations have been verified against some of the Test Vectors in the RFC's to make sure that the functions are correct.