We introduce the concept of encoding and manipulation of information on single photons. This is exploited in the technique of quantum cryptography to distribute random bit strings in a secure way. More general quantum information processing requires a conditional interaction between separate photons. This can be achieved by exploiting the interference between two photons at a beam-splitter and the non-linearity inherent in detection. As yet the efficiency of such gates is low.