Quantum computation and quantum cryptography