Курсовая работа: Несанкционированный доступ к терминалам серверов с операционными системами семейства UNIX
* DES_bs_crypt() outputs in just O(log2(ARCH_BITS)) operations.
*/
int DES_bs_cmp_all(ARCH_WORD *binary, int count)
{
register int bit;
register ARCH_WORD mask;
mask = 0;
if (DES_bs_mem_saving)
for (bit = 0; bit < ((count < 32) ? count : 32); bit++) {
mask |= DES_bs_all.B[bit] ^
((binary[0] & (1 << bit)) ? ~(ARCH_WORD)0 : 0);
if (mask == ~(ARCH_WORD)0) return 0;
}
else
for (bit = 0; bit < count; bit++) {
mask |= DES_bs_all.B[bit] ^ binary[bit];
if (mask == ~(ARCH_WORD)0) return 0;
}
return 1;
}
int DES_bs_cmp_one(ARCH_WORD *binary, int count, int index)
{
register int bit;
register ARCH_WORD mask;
if (DES_bs_mem_saving) {
for (bit = 0; bit < count; bit++)
if (((DES_bs_all.B[bit] >> index) ^
(binary[bit >> 5] >> (bit & 0x1F))) & 1) return 0;
return 1;