Linuxで、crypt(3) を使う

crypt(3)

cryptはパスワードとデータの暗号化を行う。

#define _XOPEN_SOURCE
#include <unistd.h>

char *crypt(const char *key, const char *salt);

戻り値:暗号化されたパスワードへのポインタ(静的な
データへのポインタ)。
エラーの場合は、NULL。

  • key:ユーザが入力するパスワード

  • salt:[a-zA-Z0-9./]から選ばれた2文字の文字列。この文字列はアルゴリズムの出力を4096通りにかき乱すのに使われる。
  • DES アルゴリズムにはいくつかの癖があり、
    それによってパスワード認証以外に crypt() を
    使うのはたいへんよくない選択となっている。
    もし crypt() を暗号プロジェクトに使おうという
    案をもっているならば、それはやめたほうがよい。
    暗号化についてのよい本と誰でも入手できる 
    DES ライブラリのひとつを手にいれるべきだ。  



    crypt(3)のサンプル

    #include <unistd.h>
    #include <stdio.h>
    
    int
    main()
    {
        char *encrypted = NULL;
        encrypted = (char*)crypt("key", "12");
        printf("%s\n", encrypted);
        return 0;
    }

    ビルドは、gccに-cryptオプションをつける
    >gcc -crypt crypt.c
    >./a.out
    >12RpC4iQG8R6g

    参考:http://www.linux.or.jp/JM/html/LDP_man-pages/man3/crypt.3.html