DESは1種類の鍵を使って暗号化/復号化を行う標準的な暗号化処理なのに対して、
3DESは3種類の鍵を組み合わせることで、最高水準の堅牢性を持つ暗号化処理を実現できます。
DESにはブロックと鍵の使い方によって ECB 、CBC 、OFB 、CFB の4つのモードがあります。
 
バージョン0.6では、すべてのモードに対応しています。
| モード | 説明 | 
|---|---|
| ECB | 基本型と言えるモードで、データをブロックに分割した後、各ブロックを秘密鍵で暗号化します。 | 
| CBC | 暗号化された前ブロックと、まだ暗号化されていない現在のブロックとの XORをとり、 これを秘密鍵で暗号化します。 ブロックの最初はその前のブロックがないので初期ベクトル(iv)を与えます。  | 
| OFB | 前ブロックの暗号化結果が次ブロックの XOR をとる値としてフィードバックされます。 | 
| CFB | ブロックごとに乱数を生成し、これと対応するブロックの XOR をとります。 | 
package require tclDESjr
# Keyの生成
set key [::des::keyset create passwd01]
# CBCモード
set mode cbc
# CBCモードのiv
set iv [binary format H16 11224488eeddbb77]
# 文字列
set str {Hello World!}
# 暗号化する
set code [::des::encrypt $key $str $mode $iv]
# 復号化する
set code [::des::decrypt $key $code $mode $iv]
=> Hello World!
# Keyの破棄
::des::keyset destroy $key
 | 
package require tclDES
# Keyの生成
set key [::des::keyset create passwd01passwd02passwd03]
# CBCモード
set mode cbc
# CBCモードのiv
set iv [binary format H16 11224488eeddbb77]
# 文字列
set str {Hello World!}
# 暗号化する
set code [::des::encrypt $key $str $mode $iv]
# 復号化する
set code [::des::decrypt $key $code $mode $iv]
=> Hello World!
# Keyの破棄
::des::keyset destroy $key
 |