Why is using a pseudo-random key considered more practical than a one-time pad?

No one uses One-time pads, because it is impractical. Modern cryptography utilizes block ciphers and stream ciphers because all you need to do is transmit a very small key, using a key exchange method and then based on this key you can generate an effectively infinite amount of pseudo-random output.

A stream cipher works a lot like a one time pad. If you message is X bytes long, then you generate X bytes of PRNG stream and then XOR this with your plain text message to produce the cipher text. If you ever reuse this PRNG stream you will probably seriously undermine the secrecy of your message. The same holds true for a one time pad. If the attacker knows the plain text, then a simple XOR yields the pseudo-random bytes used to encrypt the message.


Wikipedia explains why the one-time pad is not used in practice; the need to exchange a very long key is not terribly practical.

One alternative is a stream cipher. Wikipedia explains how stream ciphers work. Stream ciphers use a short key to encrypt arbitrarily long messages.

Wikipedia explains the relationship behind the one-time pad and the stream cipher and why you can think of the stream cipher concept as being loosely related to a one-time pad, but with a shorter key. A stream cipher works by starting with a short seed, using a cryptographically strong secure pseudorandom number generator to stretch this into a long sequence (as long as the message), and then combining it with the message in the same way the one-time pad does. It is important to understand that this approach does not qualify as a one-time pad, and does not offer the same provable security properties as a one-time pad.