Skip to content

asdfjkl/pyky

Repository files navigation

Crystals-Kyber in Python

About

  • just a toy implementation to better understand the algorithm
  • all three 512, 768 and 1024 sec levels.
  • ported from the reference and the Go Implementation, so not the fanciest Python code
  • not hardened against (timing/other) side channel attacks
  • test coverage is poor, use at your own risk

How To Use

Just take a look at ccakem.py. Functions

  • kem_keygenXXX(),
  • kem_encapsXXX(pubkey, seed=None) and
  • kem_decapsXXX(private_key, ciphertext)

correspond directly to the spec. For kem_encaps you can optionally provide a custom seed which is useful for debugging.

Typical kem, e.g. 512 sec level, would be

priv, pub = kem_keygen512()
secret1, cipher = kem_encaps512(pub)
secret2 = kem_decaps512(priv, cipher)

About

CRYSTALS-Kyber (PQC KEM) in pure python

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages