[4]; str; n, nFields; (pwd, password.operator LPCTSTR (), 20);
recv (s, len, sizeof len, 0);// прийом даних від клієнта = recv (s, encrypted, (int) len, 0);// прийом даних від клієнта
crypt (encrypted, buf, pwd, n); (n <1) {(s);// закриття гнезда0;
} {(IsBusy); = true; LipField; = pLipRec-> Open (AFX_DB_USE_DEFAULT_TYPE, buf); = pLipRec-> GetODBCFieldCount (); (n! = 0 | | nFields> 0) {(s, (char *) & nFields, sizeof nFields, 0); (int i = 0; i GetODBCFieldInfo (i, LipField); = crypt (LipField.m_strName. operator LPCTSTR (),, pwd, LipField.m_strName.GetLength () + 1); (s, (char *) & n, sizeof n, 0); (s, encrypted, n, 0);
}> MoveFirst (); (! pLipRec-> IsEOF ())
{(int i = 0; i
{> GetFieldValue (i, str); = crypt (str, encrypted, pwd, str.GetLength () + 1); (s, (char *) & n, sizeof n, 0); (s, encrypted, n, 0);
}> MoveNext (); (! pLipRec-> IsEOF ()) [0] = 1; [0] = 0; (s, len, 1, 0);
}> Close ();
} {= 0; (s, (char *) & nFields, sizeof nFields, 0);
} = false; (s, len, sizeof len, 0);// прийом даних від клієнта = recv (s, encrypted, (int) len, 0);// прийом даних від клієнта (encrypted, buf, pwd, n);
} while (n> 0); (s);// закриття гнезда0;
}
# include "stdafx.h"
# include "crypt.h"
# include
// функція перетворення рядка пароля в гаму шифру
unsigned long gamma (char * pwd)
{buf [20]; i; long flag; unsigned long g; (pwd) {(buf, 0x55, 20) ;//UUUUUUUUUUUUUUUUUUUU (buf, pwd, strlen (pwd)) ;/ /passwordUUUUUUUUUUUU (i = 0, g = 0; i <20; i + +)// згортка пароля + = (unsigned long) (buf [i] <<(i% 23));
} (i = 5; i> 0; i -) {//циклічний зсув на 5 розрядів вправо
flag = g & 1; = g>> 1; (flag)
g | = 0x80000000;
} g;// повернути значення гами
}
// шифрує відкритий текст source за паролем pwd
// і записує шифрований текст у dest
// шифрування сімметрічноеcrypt (const char * source, char * dest, char * pwd, int len)
{, nBlocs; long * pSrc, * pDst, g; = (unsigned long *) source; = (unsigned long *) dest;
g = gamma (pwd) ;//отримати гаму шифру = (len + 1)/4 + 1;// порахувати число 32-розрядних блоків (i = 0; i
* pDst = * pSrc ^ gamma (0);// тексту блоками по 32 біта [nBlocs * 4] = 0 ;//вставити завершальний символ 0nBlocs * 4 + 1 ;//повернути число байт в з...