codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
/* FFFTPのパスワード保存・読み出し処理 ver.1.96dより */ /*----- パスワードを暗号化する ------------------------------------------------ * * Parameter * char *Str : パスワード * kchar *Buf : 暗号化したパスワードを格納するバッファ * * Return Value * なし *----------------------------------------------------------------------------*/ static void EncodePassword(char *Str, char *Buf) { unsigned char *Get; unsigned char *Put; int Rnd; int Ch; srand((unsigned)time(NULL)); Get = (unsigned char *)Str; Put = (unsigned char *)Buf; while(*Get != NUL) { Rnd = rand() % 3; Ch = ((int)*Get++) << Rnd; Ch = (unsigned char)Ch | (unsigned char)(Ch >> 8); *Put++ = 0x40 | ((Rnd & 0x3) << 4) | (Ch & 0xF); *Put++ = 0x40 | ((Ch >> 4) & 0xF); if((*(Put-2) & 0x1) != 0) *Put++ = (rand() % 62) + 0x40; } *Put = NUL; return; } /*----- パスワードの暗号化を解く ---------------------------------------------- * * Parameter * char *Str : 暗号化したパスワード * kchar *Buf : パスワードを格納するバッファ * * Return Value * なし *----------------------------------------------------------------------------*/ static void DecodePassword(char *Str, char *Buf) { unsigned char *Get; unsigned char *Put; int Rnd; int Ch; Get = (unsigned char *)Str; Put = (unsigned char *)Buf; while(*Get != NUL) { Rnd = ((unsigned int)*Get >> 4) & 0x3; Ch = (*Get & 0xF) | ((*(Get+1) & 0xF) << 4); Ch <<= 8; if((*Get & 0x1) != 0) Get++; Get += 2; Ch >>= Rnd; Ch = (Ch & 0xFF) | ((Ch >> 8) & 0xFF); *Put++ = Ch; } *Put = NUL; return; }
Private
[
?
]
Run code