暗号方式には大きく分けて、秘密鍵暗号方式と公開鍵暗号方式の二つがある。秘密鍵暗号方式は、暗号化と復号の両方に同じ鍵を使う方式で、処理が高速なため大量のデータ通信に向いている。しかし、通信を始める前にその鍵を安全に相手へ渡す必要があり、これが大きな課題となる。一方、公開鍵暗号方式では、暗号化に使う公開鍵と、復号に使う秘密鍵が別になっており、公開鍵は誰に渡してもよい。送信者は受信者の公開鍵で暗号化し、受信者だけが持つ秘密鍵で復号するため、安全に通信を開始できる。ただし計算量が大きく処理が遅いため、大量データの暗号化には不向きである。実際のインターネット通信では、最初に公開鍵暗号方式で共通の秘密鍵を安全に交換し、その後の通信は高速な秘密鍵暗号方式で行う。この組み合わせ方式がSSL/TLSなどで使われている。