ミケネコ研究所 / Perl / Perl5 用 DES crypt ライブラリ

Perl5 用 DES crypt ライブラリ

Last Updated: 2002/05/14


概要

Perl の crypt() 関数による暗号化処理は、一般的に 56bit DES 方式と MD5 方式の 2 種類があり、マシンによって異なります。しばしば、このマシン依存性に悩まされるケースがあります。

このライブラリはマシンに依存せず、Perl のみで 56bit DES 暗号化処理を行い、Perl の crypt() の代わりに使うことが出来ます。返り値は、56bit DES による Perl の crypt() 関数の結果と同値であることを保障します。*1

環境

Perl 5 がインストールされた環境で使用できます。

使用方法

descrypt.pl をダウンロードし、require 文でロードしてから、使用して下さい。オブジェクト指向スタイルインターフェースではありません。

Perl の crypt 関数の場合 descrypt.pl ライブラリの場合
$password = "Hello";
$salt = "AB";


print crypt($password, $salt);
$password = "Hello";
$salt = "AB";

require "descrypt.pl";
print &descrypt::encrypt($password, $salt);
実行結果
AB/uOsC7P93EI
実行結果
AB/uOsC7P93EI

ほとんど Perl の crypt() 関数と同様に使えます。

文法

&descrypt::encrypt(PLAINTEXT, SALT )
PLAINTEXT
暗号化する文字列を 8 バイト以内で指定します。ASCII だけでなく日本語などいかなる文字も使えます。8 バイトを超えた分は切り取られます。
SALT
暗号化のベースとなる文字列を 2 バイトで与えます。使える文字は 0 〜 9、A 〜 Z、a 〜 z、「.(ピリオド)」、「/(スラッシュ)」の 64 文字の中から選びます。
SALT を省略したり、1 バイトしか指定しなかったり、SALTとして使えない文字が指定されていた場合は、64 文字の中から SALT がランダムに決定されます。*1
*1 : Perl の crypt() 関数は、SALT 省略時は "AA"、不正な SALT には "." を宛てているようです。このように、不正な SALT を与えた場合においてのみ、descrypt.pl と Perl の crypt() の挙動は異なります。

条件・免責

どなたでも、個人・学術・商用利用において、無償で使用することができます。

再配布も構いませんが、この場合必ず、

して下さい。他のファイルといっしょにアーカイブに含めて配布したい場合も同様です。

本ライブラリの利用によって生じるあらゆる損害の責任は、利用者にあるものとします。

ダウンロード

descrypt.zip v1.1

改版履歴

2002/02/09 v1.0
公開版。Perl 5.005 以上に最適化。
2002/05/14 v1.1
初期化に関するバグフィクス。

捕捉:DES の経歴について

DES は、1977年に ANSI (米商務省標準局) に採用された暗号化規格です。UNIX の普及とともに広く使われ、今なおポピュラーな規格です。アルゴリズムは広く公開され、多くの学者によって研究されましたが、特有の癖や欠点が見つかっておりません。

しかし、56bit という広さを持つ鍵空間は総当り攻撃による解読が不可能ではないため、今となっては軍事利用・産業利用されることはありません。ですので、ミサイルの発射やネットバンキングのために DES を使うことはありませんが、インターネット掲示板のパスワード秘匿などのもっとパーソナルな利用に関してはいまだ有効で手軽な方式であり、広く使われています。

DES およびその関連特許は 米 IBM 社が所持していましたが、標準規格の採用時に放棄され、また関連特許は期限切れになりました。

米国で開発された電子暗号化技術は米国外への輸出が規制されていますが、1998年9月に 56bit DES の規制が緩和されました。


http://mikeneko.creator.club.ne.jp/~lab/perl/des/
ミケネコ研究所
お問い合わせ <lab@mikeneko.ne.jp>