Ciphertext can be encoded and decoded with two kinds of "keys": synchronous and asynchronous. With synchronous codes, the same key used to put encode is used to decode. A key is a long string of numbers and it is used by a mathematical algorithm to unlock the code.
Asynchronous codes use public and private keys. The same keys can't be used to lock and unlock a message. Everyone using a particular computer system has their own public and private keys. Public keys could be known by many people. Private keys are known only by the user.