This is a scaled down implementation of NIST Finalist Post Quantum Cryptography algorithm, KYBER.
kb = BabyKyber(KYBER_Q, n, k)
public_key, private_key = kb.keygen()
cipher_u, cipher_v = kb.encrypt(message, public_key)
message = kb.decrypt(cipher_u, cipher_v, private_key)