Post-quantum cryptography explained