Rechercher une page de manuel
crypt
Langue: ja
Version: 2001-12-23 (fedora - 25/11/07)
Section: 3 (Bibliothèques de fonctions)
名前
crypt - パスワードとデータの暗号化書式
#define _XOPEN_SOURCE#include <unistd.h>
char *crypt(const char *key, const char *salt);
-lcrypt でリンクする。
説明
crypt() はパスワード暗号化関数である。 鍵探索のハードウェアによる実装を妨げるように(その他にもいろいろ) 変更した Data Encryption Standard アルゴリズムを元にしている。key はユーザが入力するパスワードである。
salt は集合 [a-zA-Z0-9./] から選ばれた 2 文字の文字列である。 この文字列はアルゴリズムの出力を 4096 通りにかき乱すのに使われる。
key の最初の 8 文字の各文字から下位 7 ビットをとって 56 ビットの鍵が得られる。 この 56 ビットの鍵は特定の文字列(ふつうはすべて 0 の文字列) を繰り返し暗号化するのに用いられる。 返り値は暗号化されたパスワードへのポインタで、13 の印字可能な ASCII 文字 からなる(最初の 2 文字は salt そのもの)。 返り値は、関数呼出しのたびに上書きされる静的なデータへのポインタである。
警告: 鍵空間は 2**56 = 7.2e16 の可能な値から成る。 この鍵空間の全探索は強力な並列計算機を使えば可能である。また crack(1) のようなソフトウェアはこの鍵空間の中で、多くの人にパスワードとして 使われるような鍵についての全探索が可能である。 それゆえ、パスワードを選択するときには、すくなくとも、 一般的に使われる単語と名前は避けるべきである。 passwd(1) を使う時にはクラックされうるパスワードについての検査をすることが 推奨される。
DES アルゴリズムにはいくつかの癖があり、それによってパスワード認証以外に crypt(3) を使うのはたいへんよくない選択となっている。もし crypt(3) を暗号プロジェクトに使おうという案をもっているならば、それはやめたほうが よい。暗号化についてのよい本と誰でも入手できる DES ライブラリのひとつを 手にいれるべきだ。
返り値
暗号化されたパスワードへのポインターが返される。 エラーの場合には NULL が返される。エラー
- ENOSYS
- crypt() 関数が実装されていない。多分アメリカの輸出規制のために。
準拠
SVr4, 4.3BSD, POSIX.1-2001注意
glibc での注意
この関数の glibc2 版は以下のような拡張機能がある。 もし salt の文字列の最初の 3 文字が "$1$" であり、最大 8 文字の後、 最後に "$" で終わっている(これはなくてもよい)場合、 DES ではなく MD5 を使った暗号化アルゴリズムが用いられ、 出力は最大 34 バイトとなる。 出力は "$1$<salt>$<encoded>" の形式であり、 "<salt>" は salt における "$1$" に引き続く 8 文字以下の文字列、 "<encoded>" は引き続く 22 文字の文字列である。 "<salt>" と "<encoded>" の文字は [a-zA-Z0-9./] の集合から 選ばれる。 この場合、(最初の 8 文字ではなく) キー 全体が意味がある。関連項目
login(1), passwd(1), encrypt(3), getpass(3), passwd(5), feature_test_macros(7)Contenus ©2006-2024 Benjamin Poulain
Design ©2006-2024 Maxime Vantorre