/* vi: set tabstop=4 nocindent noautoindent: */ /** @brief 暗号用ライブラリ @file cipher.c @author Fumi.Iseki (C) */ #include "cipher.h" /** Buffer xlcrypt(Buffer str, Buffer salt) crypt関数(DES)による passwd(str)の多重(2回)ハッシュ値化.@n saltの長さに応じて,パスワードを多重にハッシュ値化する.@n saltの2Byte毎に一回ハッシュ値化を行う. @param str ハッシュ値化するパスワード. @param salt saltキー.(文字列) @return ハッシュ値されたパスワードストリング.saltキーは返さない.通常 11Byte. */ Buffer xlcrypt(Buffer str, Buffer salt) { int i, len, lsalt; char* passwd; char pass[LPASS+1]; Buffer ret; memset(pass, 0, LPASS+1); len = Min((int)strlen((const char*)str.buf), LPASS); memcpy(pass, str.buf, len); lsalt = ((int)strlen((const char*)salt.buf)/2)*2; if (lsalt>=2) { passwd = (char*)crypt((const char*)pass, (const char*)salt.buf); if (strncmp((const char*)salt.buf, "$1$", 3)) { // DES for (i=2; i