ほとんどのパケットは丸見え。
文字を一定量ずらす。
暗号化と復号化の鍵が同じ。
鍵の(伝達)共有手段が問題となる。
暗号化と復号化の鍵が異なる。
暗号化に公開鍵、復号化に秘密鍵を用いる。
計算コストが高い
長大なバイト列を特定の計算を施して一定長のバイト列に 変換する。データの比較を短いバイト列で済ますことができる。
特定のアルゴリズムを用い、元のバイト列を暗号化する関数。
	   Rubyの例を示す。文字列 "original" を
	   salt "ab" でDES暗号化。
	   
"original".crypt("ab")
=> "abvUK.F.H7/6I"
	   暗号化文字列の最初の2文字はsalt自身。
	   "ab" 以外のsaltで試してみよ。
多くのシステムでは、crypt()
	   メソッド(関数)の、saltの与え方で使用するアルゴリズムを
	   切り替えられる。salt部分の用法は厳密には
$id$salt$......$
で、id の部分と使用アルゴリズムの対応は 以下のとおり。
| 1 | MD5 | 
| 2a | Blowfish | 
| 5 | SHA-256 | 
| 6 | SHA-512 | 
パスワードはパスワードどうしで比較するのではなく 暗号化された文字列どうしで比較する。 1方向ハッシュ関数はそのために重要。
チャレンジ文字列とパスワード文字列を合成したものを クライアント側とサーバ側で互いに暗号化し、比較。
パスワードをサーバ側に送る。 暗号化されていない回線で利用すると危険。