англійськафранцузькаіспанська

Ad


Значок OnWorks

cksumposix - онлайн у хмарі

Запустіть cksumposix у постачальника безкоштовного хостингу OnWorks через Ubuntu Online, Fedora Online, онлайн-емулятор Windows або онлайн-емулятор MAC OS

Це команда cksumposix, яку можна запустити в постачальнику безкоштовного хостингу OnWorks за допомогою однієї з наших численних безкоштовних робочих станцій, таких як Ubuntu Online, Fedora Online, онлайн-емулятор Windows або онлайн-емулятор MAC OS

ПРОГРАМА:

ІМ'Я


cksum — записати контрольні суми та розміри файлів

СИНТАКСИС


cksum [файл...]

ОПИС


Команда cksum Утиліта повинна обчислити і записати на стандартний вихід циклічну перевірку надмірності
(CRC) для кожного вхідного файлу, а також записати на стандартний вихід кількість октетів у кожному
файл. Використовуваний CRC заснований на поліномі, який використовується для перевірки помилок CRC в
Стандарт ISO/IEC 8802‐3:1996 (Ethernet).

Кодування контрольної суми CRC визначається генеруючим поліномом:

G(x)=x32 +x26 +x23 +x22 +x16 +x12 +x11 +x10 +x8+x7+x5+x4+x2+x+1

Математично значення CRC, що відповідає даному файлу, має бути визначено
наступна процедура:

1. n біти, що підлягають оцінці, вважаються коефіцієнтами полінома по mod 2
M(x) ступеня n−1. Ці n біти – це біти з файлу з найбільшою кількістю
значний біт – це найзначніший біт першого октету файлу та
останній біт — це найменший значущий біт останнього октету, доповнений нульовими бітами (якщо
необхідно), щоб досягти цілого числа октетів, а потім одного або кількох октетів
представляє довжину файлу у вигляді двійкового значення, першим октет найменшого значущого.
Використовується найменша кількість октетів, які можуть представляти це ціле число.

2. M(x) множиться на x32 (тобто зміщено вліво на 32 біти) і поділено на G(x) використовуючи
mod 2 поділу, виробляючи залишок R(x) ступеня ≤ 31.

3. Коефіцієнти R(x) вважаються 32-бітовою послідовністю.

4. Послідовність бітів доповнюється, і результатом є CRC.

ВАРІАНТИ


Ні.

ОПЕРАНДИ


Підтримується наступний операнд:

файл Шлях до файлу, який потрібно перевірити. Якщо ні файл вказано операнди,
має використовуватися стандартний вхід.

STDIN


Якщо ні файл операнди вказуються і повинні використовуватися, якщо a
файл операнд є '−' і реалізація лікує '−' що означає стандартний вхід.
В іншому випадку стандартний вхід не використовуватиметься. Дивіться розділ ВХІДНІ ФАЙЛИ.

ВХІД ФАЙЛИ


Вхідні файли можуть бути будь-якого типу.

НАВКОЛИШНЄ СЕРЕДОВИЩЕ ЗМІННІ


Наступні змінні середовища мають впливати на виконання cksum:

МОВА Надайте значення за замовчуванням для змінних інтернаціоналізації, які не встановлені або
нуль. (Дивіться том Base Definitions POSIX.1-2008, розділ 8.2,
Internationalization Змінні за пріоритет інтернаціоналізації
змінні, що використовуються для визначення значень категорій мовного стандарту.)

LC_ALL Якщо встановлено не порожнє значення рядка, замініть значення всіх інших
змінні інтернаціоналізації.

LC_CTYPE Визначте локаль для інтерпретації послідовностей байтів текстових даних
як символи (наприклад, однобайтові на відміну від багатобайтових символів у
аргументи).

LC_MESSAGES
Визначте місцевий стандарт, який слід використовувати для впливу на формат і вміст
діагностичні повідомлення, записані у стандартну помилку.

NLSPATH Визначте розташування каталогів повідомлень для обробки LC_MESSAGES.

АСИНХРОННИЙ ПОДІЇ


За замовчуванням.

ВИСТАВКА


Для кожного успішно обробленого файлу cksum утиліта напише наступне
формат:

"%u %d %s\n", <контрольна сума>,# of октетів>,ім'я шляху>

Якщо ні файл був вказаний операнд, ім'я шляху та його початок буде опущено.

STDERR


Стандартна помилка повинна використовуватися лише для діагностичних повідомлень.

ВИХІД ФАЙЛИ


Ні.

ПОВЕРНЕНІ ОПИС


Ні.

EXIT СТАТУС


Повинні бути повернуті такі вихідні значення:

0 Усі файли оброблено успішно.

>0 Сталася помилка.

НАСЛІДКИ OF ПОМИЛКИ


За замовчуванням.

Команда після розділам він має інформативний.

ЗАСТОСУВАННЯ ВИКОРИСТАННЯ


Команда cksum Утиліта зазвичай використовується для швидкого порівняння підозрілого файлу з довіреним
версії того ж самого, наприклад, щоб забезпечити надходження файлів, переданих через шумний медіа
неушкоджений. Однак це порівняння не можна вважати криптографічно безпечним. The
ймовірність того, що пошкоджений файл видає такий самий CRC, що й оригінал, мала; навмисне
обман - це важко, але, мабуть, не неможливо.

Хоча вхідні файли до cksum може бути будь-якого типу, результати не обов’язково повинні бути такими, якими були б
очікується на символьних файлах спеціальних пристроїв або на типах файлів, не описаних Системою
Обсяг інтерфейсів POSIX.1‐2008. Оскільки цей том POSIX.1‐2008 не визначає
розмір блоку, який використовується під час введення, контрольні суми символьних спеціальних файлів не потрібно обробляти
всі дані в цих файлах.

Алгоритм виражається в термінах бітового потоку, розділеного на октети. Якщо файл є
передається між двома системами і зазнає будь-яких перетворень даних (наприклад, змін
упорядкування байтів від малого до великого), ідентичних значень CRC очікувати не можна.
Реалізації, які виконують такі перетворення, можуть розширюватися cksum впоратися з таким
ситуаціях.

ПРИКЛАДИ


Ні.

ОБГОВОРЕННЯ


Наступну програму на мові C можна використовувати як модель для опису алгоритму. Це
припускає, що а бак становить один октет. Він також передбачає, що весь файл доступний для
один прохід через функцію. Це було зроблено для простоти демонстрації
алгоритм, а не як модель реалізації.

статичний непідписаний довго crctab[] = {
0х00000000,
0x04c11db7, 0x09823b6e, 0x0d4326d9, 0x130476dc, 0x17c56b6b,
0x1a864db2, 0x1e475005, 0x2608edb8, 0x22c9f00f, 0x2f8ad6d6,
0x2b4bcb61, 0x350c9b64, 0x31cd86d3, 0x3c8ea00a, 0x384fbdbd,
0x4c11db70, 0x48d0c6c7, 0x4593e01e, 0x4152fda9, 0x5f15adac,
0x5bd4b01b, 0x569796c2, 0x52568b75, 0x6a1936c8, 0x6ed82b7f,
0x639b0da6, 0x675a1011, 0x791d4014, 0x7ddc5da3, 0x709f7b7a,
0x745e66cd, 0x9823b6e0, 0x9ce2ab57, 0x91a18d8e, 0х95609039,
0x8b27c03c, 0x8fe6dd8b, 0x82a5fb52, 0x8664e6e5, 0xbe2b5b58,
0xbaea46ef, 0xb7a96036, 0xb3687d81, 0xad2f2d84, 0xa9ee3033,
0xa4ad16ea, 0xa06c0b5d, 0xd4326d90, 0xd0f37027, 0xddb056fe,
0xd9714b49, 0xc7361b4c, 0xc3f706fb, 0xceb42022, 0xca753d95,
0xf23a8028, 0xf6fb9d9f, 0xfbb8bb46, 0xff79a6f1, 0xe13ef6f4,
0xe5ffeb43, 0xe8bccd9a, 0xec7dd02d, 0х34867077, 0x30476dc0,
0x3d044b19, 0x39c556ae, 0x278206ab, 0x23431b1c, 0x2e003dc5,
0x2ac12072, 0x128e9dcf, 0x164f8078, 0x1b0ca6a1, 0x1fcdbb16,
0x018aeb13, 0x054bf6a4, 0x0808d07d, 0x0cc9cdca, 0x7897ab07,
0x7c56b6b0, 0х71159069, 0x75d48dde, 0x6b93dddb, 0x6f52c06c,
0x6211e6b5, 0x66d0fb02, 0x5e9f46bf, 0x5a5e5b08, 0x571d7dd1,
0x53dc6066, 0x4d9b3063, 0x495a2dd4, 0x44190b0d, 0x40d816ba,
0xaca5c697, 0xa864db20, 0xa527fdf9, 0xa1e6e04e, 0xbfa1b04b,
0xbb60adfc, 0xb6238b25, 0xb2e29692, 0x8aad2b2f, 0x8e6c3698,
0x832f1041, 0x87ee0df6, 0x99a95df3, 0x9d684044, 0x902b669d,
0x94ea7b2a, 0xe0b41de7, 0xe4750050, 0xe9362689, 0xedf73b3e,
0xf3b06b3b, 0xf771768c, 0xfa325055, 0xfef34de2, 0xc6bcf05f,
0xc27dede8, 0xcf3ecb31, 0xcbffd686, 0xd5b88683, 0xd1799b34,
0xdc3abded, 0xd8fba05a, 0x690ce0ee, 0x6dcdfd59, 0x608edb80,
0x644fc637, 0x7a089632, 0x7ec98b85, 0x738aad5c, 0x774bb0eb,
0x4f040d56, 0x4bc510e1, 0х46863638, 0x42472b8f, 0x5c007b8a,
0x58c1663d, 0x558240e4, 0x51435d53, 0x251d3b9e, 0x21dc2629,
0x2c9f00f0, 0x285e1d47, 0x36194d42, 0x32d850f5, 0x3f9b762c,
0x3b5a6b9b, 0x0315d626, 0x07d4cb91, 0x0a97ed48, 0x0e56f0ff,
0x1011a0fa, 0x14d0bd4d, 0x19939b94, 0x1d528623, 0xf12f560e,
0xf5ee4bb9, 0xf8ad6d60, 0xfc6c70d7, 0xe22b20d2, 0xe6ea3d65,
0xeba91bbc, 0xef68060b, 0xd727bbb6, 0xd3e6a601, 0xdea580d8,
0xda649d6f, 0xc423cd6a, 0xc0e2d0dd, 0xcda1f604, 0xc960ebb3,
0xbd3e8d7e, 0xb9ff90c9, 0xb4bcb610, 0xb07daba7, 0xae3afba2,
0xaafbe615, 0xa7b8c0cc, 0xa379dd7b, 0x9b3660c6, 0x9ff77d71,
0x92b45ba8, 0x9675461f, 0x8832161a, 0x8cf30bad, 0x81b02d74,
0x857130c3, 0x5d8a9099, 0x594b8d2e, 0x5408abf7, 0x50c9b640,
0x4e8ee645, 0x4a4ffbf2, 0x470cdd2b, 0x43cdc09c, 0x7b827d21,
0x7f436096, 0x7200464f, 0x76c15bf8, 0x68860bfd, 0x6c47164a,
0х61043093, 0x65c52d24, 0x119b4be9, 0x155a565e, 0х18197087,
0x1cd86d30, 0x029f3d35, 0x065e2082, 0x0b1d065b, 0x0fdc1bec,
0x3793a651, 0x3352bbe6, 0x3e119d3f, 0x3ad08088, 0x2497d08d,
0x2056cd3a, 0x2d15ebe3, 0x29d4f654, 0xc5a92679, 0xc1683 до н.е.,
0xcc2b1d17, 0xc8ea00a0, 0xd6ad50a5, 0xd26c4d12, 0xdf2f6bcb,
0xdbee767c, 0xe3a1cbc1, 0xe760d676, 0xea23f0af, 0xeee2ed18,
0xf0a5bd1d, 0xf464a0aa, 0xf9278673, 0xfde69bc4, 0x89b8fd09,
0x8d79e0be, 0x803ac667, 0x84fbdbd0, 0x9abc8bd5, 0x9e7d9662,
0x933eb0bb, 0x97ffad0c, 0xafb010b1, 0xab710d06, 0xa6322bdf,
0xa2f33668, 0xbcb4666d, 0xb8757bda, 0xb5365d03, 0xb1f740b4
};

unsigned long memcrc(const unsigned char *b, size_t n)
{
/* Вхідні аргументи:
* const unsigned char* b == послідовність байтів до контрольної суми
* size_t n == довжина послідовності
*/

реєстр size_t i;
регістр без знака c, s = 0;

для (i = n; i > 0; −−i) {
c = *b++;
s = (s << 8) ^ crctab[(s >> 24) ^ c];
}

/* Розширюємо за допомогою довжини рядка. */
тоді як (n != 0) {
c = n & 0377;
n >>= 8;
s = (s << 8) ^ crctab[(s >> 24) ^ c];
}

повернення ~s;
}

Історична практика запису кількості ``блоків'' була змінена на запис
кількість октетів, оскільки останній не тільки корисніший, а й оскільки історичний
реалізації не були послідовними у визначенні того, що означає "блок".

Використаний алгоритм був обраний для підвищення робочої стійкості cksum. Ні
System V або BSD сума був обраний алгоритм. Оскільки кожен з них був різним і
кожна була поведінкою за замовчуванням у цих системах, якщо реалістичний компроміс не був доступний
будь-який з них був вибраний — деякий набір історичних додатків зламався. Тому назва
було змінено на cksum. Хоча історичне сума команди, ймовірно, залишаться
протягом багатьох років, програми, розроблені для перенесення між системами, повинні використовувати
нова назва.

Вибраний алгоритм базується на тому, що використовується стандартом ISO/IEC 8802‐3:1996
(Ethernet) для поля послідовності перевірки кадрів. Використаний алгоритм не відповідає
технічне визначення a контрольна сума; цей термін використовується з історичних причин. Довжина
файл включається в обчислення CRC, оскільки це паралельно включенню довжини
поле через Ethernet у своєму CRC, а також тому, що він захищає від ненавмисних зіткнень
між файлами, які починаються з різних рядів нульових октетів. Шанс, що два
різні файли виробляють ідентичні CRC набагато більше, якщо їх довжини не є
розглянуто. Якщо зберігати довжину та контрольну суму самого файлу окремо, це дасть a
трохи більш надійний алгоритм, але історичне використання завжди було єдиним числом
(контрольна сума як надрукована) представляє підпис файлу. Було вирішено, що
історичне використання було важливішим міркуванням.

Ранні пропозиції містили зміни в алгоритмі Ethernet, які передбачали вилучення
значення таблиці, коли проміжний результат став нульовим. Було продемонстровано, що це менше
надійніший, ніж поточний метод, і його математично важко описати чи обґрунтувати.

Використаний розрахунок ідентичний тому, що наведений у псевдокоді в згаданому Sarwate
статті. Відтворення псевдокоду:

X <− 0; Y <− 0;
та цінності i <− m -1 крок -1 до 0 do
починати
T <− X(1) ^ A[i];
X(1) <− X(0); X(0) <− Y(1); Y(1) <− Y(0); Y(0) <− 0;
коментар: f[T] та f'[T] позначають Т-й слова in
таблиця f та f' ;
X <− X ^ f[T]; Y <− Y ^ f'[T];
кінець

Псевдокод відтворюється точно так, як надано; однак зауважте, що у випадку з cksum,
A[i] представляє байт файлу, слова X та Y розглядаються як один 32-розрядний
значення та таблиці f та f' є однією таблицею, що містить 32-бітові значення.

У згаданій статті Sarwate також обговорюється створення таблиці.

Майбутнє НАПРЯМКИ


Ні.

Використовуйте cksumposix онлайн за допомогою служб onworks.net


Безкоштовні сервери та робочі станції

Завантажте програми для Windows і Linux

Команди Linux

Ad