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 |