Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Есть ли в PHP аналог des_set_odd_parity? / 6 сообщений из 6, страница 1 из 1
08.09.2010, 10:35
    #36835265
NT Man
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли в PHP аналог des_set_odd_parity?
Subj.
...
Рейтинг: 0 / 0
08.09.2010, 12:09
    #36835554
NT Man
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли в PHP аналог des_set_odd_parity?
Сделал пока так
Код: plaintext
1.
2.
3.
4.
 function  des_set_odd_parity($key) {
	 if (( substr_count ( decbin ($key), '1') %  2 ) ==  0 ) $key = $key |  1 ;
	 return  $key;
}
но от такого кода сердце кровью обливается.
...
Рейтинг: 0 / 0
08.09.2010, 13:54
    #36835890
chAlx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли в PHP аналог des_set_odd_parity?
Код: plaintext
 if (( substr_count ( decbin ($key), '1') %  2 ) ==  0 ) $key = $key |  1 ;

Оно для того и нужно -- единички считать? Тогда и последний бит может оказаться единицей, и изменение его на 1 ничего не даст.
...
Рейтинг: 0 / 0
08.09.2010, 14:44
    #36836058
NT Man
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли в PHP аналог des_set_odd_parity?
chAlxОно для того и нужно -- единички считать?
ога
chAlxТогда и последний бит может оказаться единицей, и изменение его на 1 ничего не даст.
по условию последний бит всегда 0x00.
...
Рейтинг: 0 / 0
08.09.2010, 15:12
    #36836163
chAlx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли в PHP аналог des_set_odd_parity?
gmp_popcount()
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
04.05.2015, 20:48
    #38951253
inri13666
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть ли в PHP аналог des_set_odd_parity?
Почти 5 лет спустя

$key -- массив из 8 элементов
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
function des_set_odd_parity($key)
{
    $odd_parity = array(1, 1, 2, 2, 4, 4, 7, 7, 8, 8, 11, 11, 13, 13, 14, 14, 16, 16, 19, 19, 21, 21, 22, 22, 25, 25, 26, 26, 28, 28, 31, 31, 32, 32, 35, 35, 37, 37, 38, 38, 41, 41, 42, 42, 44, 44, 47, 47, 49, 49, 50, 50, 52, 52, 55, 55, 56, 56, 59, 59, 61, 61, 62, 62, 64, 64, 67, 67, 69, 69, 70, 70, 73, 73, 74, 74, 76, 76, 79, 79, 81, 81, 82, 82, 84, 84, 87, 87, 88, 88, 91, 91, 93, 93, 94, 94, 97, 97, 98, 98, 100, 100, 103, 103, 104, 104, 107, 107, 109, 109, 110, 110, 112, 112, 115, 115, 117, 117, 118, 118, 121, 121, 122, 122, 124, 124, 127, 127, 128, 128, 131, 131, 133, 133, 134, 134, 137, 137, 138, 138, 140, 140, 143, 143, 145, 145, 146, 146, 148, 148, 151, 151, 152, 152, 155, 155, 157, 157, 158, 158, 161, 161, 162, 162, 164, 164, 167, 167, 168, 168, 171, 171, 173, 173, 174, 174, 176, 176, 179, 179, 181, 181, 182, 182, 185, 185, 186, 186, 188, 188, 191, 191, 193, 193, 194, 194, 196, 196, 199, 199, 200, 200, 203, 203, 205, 205, 206, 206, 208, 208, 211, 211, 213, 213, 214, 214, 217, 217, 218, 218, 220, 220, 223, 223, 224, 224, 227, 227, 229, 229, 230, 230, 233, 233, 234, 234, 236, 236, 239, 239, 241, 241, 242, 242, 244, 244, 247, 247, 248, 248, 251, 251, 253, 253, 254, 254);
    $_key = array();
    for ($i = 0; $i < 8; $i++) {
        $_key[$i] = $odd_parity[$key[$i]];
    }
    return $_key;
}


$str - строка
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
function des_setup_key($str)
{
    $key = array();
    $tmp = array();
    $len = strlen($str);
    for ($i = 0; $i < 7; ++$i)
        $tmp[] = $i < $len ? ord($str[$i]) : "\0";
    $key[0] = $tmp[0];
    $key[1] = (($tmp[0] << 7) & 0xFF) | ($tmp[1] >> 1);
    $key[2] = (($tmp[1] << 6) & 0xFF) | ($tmp[2] >> 2);
    $key[3] = (($tmp[2] << 5) & 0xFF) | ($tmp[3] >> 3);
    $key[4] = (($tmp[3] << 4) & 0xFF) | ($tmp[4] >> 4);
    $key[5] = (($tmp[4] << 3) & 0xFF) | ($tmp[5] >> 5);
    $key[6] = (($tmp[5] << 2) & 0xFF) | ($tmp[6] >> 6);
    $key[7] = (($tmp[6] << 1) & 0xFF);
    $key = des_set_odd_parity($key);
    $key0 = "";
    foreach ($key as $k)
        $key0 .= chr($k);
    return $key0;
}
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Есть ли в PHP аналог des_set_odd_parity? / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]