EnglischFranzösischSpanisch

Ad


OnWorks-Favicon

cksumposix - Online in der Cloud

Führen Sie cksumposix im kostenlosen OnWorks-Hosting-Provider über Ubuntu Online, Fedora Online, Windows-Online-Emulator oder MAC OS-Online-Emulator aus

Dies ist der Befehl cksumposix, der im kostenlosen OnWorks-Hosting-Provider über eine unserer zahlreichen kostenlosen Online-Workstations wie Ubuntu Online, Fedora Online, Windows-Online-Emulator oder MAC OS-Online-Emulator ausgeführt werden kann

PROGRAMM:

NAME/FUNKTION


cksum — Dateiprüfsummen und -größen schreiben

ZUSAMMENFASSUNG


cksum [Datei...]

BESCHREIBUNG


Das cksum Das Dienstprogramm muss eine zyklische Redundanzprüfung berechnen und auf die Standardausgabe schreiben
(CRC) für jede Eingabedatei, und schreiben Sie auch die Anzahl der Oktette in jeder in die Standardausgabe
Datei. Der verwendete CRC basiert auf dem Polynom, das für die CRC-Fehlerprüfung im
ISO/IEC 8802-3: 1996-Standard (Ethernet).

Die Kodierung für die CRC-Prüfsumme wird durch das erzeugende Polynom definiert:

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

Mathematisch muss der CRC-Wert, der einer gegebenen Datei entspricht, definiert werden durch die
folgende Vorgehensweise:

1. Das n Auszuwertende Bits werden als Koeffizienten eines Mod-2-Polynoms angesehen
M(x) des Grades n−1. Diese n Bits sind die Bits aus der Datei mit den meisten
signifikantes Bit ist das höchstwertige Bit des ersten Oktetts der Datei und das
letztes Bit ist das niedrigstwertige Bit des letzten Oktetts, aufgefüllt mit Null-Bits (wenn
notwendig), um eine ganze Zahl von Oktetten zu erreichen, gefolgt von einem oder mehreren Oktetten
Darstellen der Länge der Datei als Binärwert, das niedrigstwertige Oktett zuerst.
Es wird die kleinste Anzahl von Oktetten verwendet, die diese ganze Zahl darstellen kann.

2. M(x) wird mit multipliziert x32 (d. h. 32 Bit nach links verschoben) und dividiert durch G(x) mit
mod 2 Division, wobei ein Rest entsteht R(x) mit Abschluss ≤ 31.

3. Die Koeffizienten von R(x) gelten als 32-Bit-Sequenz.

4. Die Bitfolge wird komplementiert und das Ergebnis ist der CRC.

OPTIONAL


Keiner.

OPERANDEN


Der folgende Operand soll unterstützt werden:

Datei Ein Pfadname einer zu prüfenden Datei. Wenn nein Datei Operanden angegeben sind, die
Standardeingabe verwendet werden.

STDIN


Die Standardeingabe ist zu verwenden, wenn nein Datei Operanden werden angegeben und sind zu verwenden, wenn a
Datei Operand ist '-' und die Implementierung behandelt die '-' als Standardeingabe bedeutet.
Andernfalls darf die Standardeingabe nicht verwendet werden. Siehe Abschnitt EINGABEDATEIEN.

SPEISUNG DATEIEN


Die Eingabedateien können jeden Dateityp haben.

VARIABLEN


Die folgenden Umgebungsvariablen sollen die Ausführung von cksum:

SPRACHE Geben Sie einen Standardwert für die Internationalisierungsvariablen an, die nicht festgelegt sind oder
Null. (Siehe den Band Basisdefinitionen von POSIX.1‐2008, Abschnitt 8.2,
Internationalisierung Variablen für den Vorrang der Internationalisierung
Variablen, die verwendet werden, um die Werte von Gebietsschemakategorien zu bestimmen.)

LC_ALL Wenn auf einen nicht leeren Zeichenfolgenwert gesetzt, überschreiben Sie die Werte aller anderen
Internationalisierungsvariablen.

LC_CTYPE Bestimmen Sie das Gebietsschema für die Interpretation von Sequenzen von Bytes von Textdaten
als Zeichen (z. B. Einzelbyte- im Gegensatz zu Mehrbyte-Zeichen in
Argumente).

LC_MESSAGES
Bestimmen Sie das Gebietsschema, das verwendet werden soll, um das Format und den Inhalt von . zu beeinflussen
Diagnosemeldungen in Standardfehler geschrieben.

NLSPATH Bestimmen Sie den Speicherort von Nachrichtenkatalogen für die Verarbeitung von LC_MESSAGES.

ASYNCHRON Events


Standard.

STDOUT


Für jede erfolgreich verarbeitete Datei wird die cksum Utility schreibt im Folgenden
Format:

"%u %d %s\n", <Prüfsumme>,# of Oktetts>,Pfadname>

Wenn nein Datei Operand angegeben wurde, der Pfadname und sein führender soll entfallen.

STDERR


Der Standardfehler darf nur für Diagnosemeldungen verwendet werden.

AUSGABE DATEIEN


Keiner.

VERLÄNGERT BESCHREIBUNG


Keiner.

EXIT STATUS


Die folgenden Exit-Werte sollen zurückgegeben werden:

0 Alle Dateien wurden erfolgreich verarbeitet.

>0 Es ist ein Fehler aufgetreten.

FOLGEN OF FEHLER


Standard.

Das Folgende Abschnitte sind informativ.

Anmeldeformular ANWENDUNG


Das cksum Dienstprogramm wird normalerweise verwendet, um eine verdächtige Datei schnell mit einer vertrauenswürdigen Datei zu vergleichen
Version derselben, um sicherzustellen, dass Dateien, die über verrauschte Medien übertragen werden, ankommen
intakt. Dieser Vergleich kann jedoch nicht als kryptographisch sicher angesehen werden. Die
die Wahrscheinlichkeit, dass eine beschädigte Datei denselben CRC wie das Original erzeugt, ist gering; absichtlich
Täuschung ist schwierig, aber wahrscheinlich nicht unmöglich.

Obwohl Eingabedateien zu cksum kann jeder Typ sein, die Ergebnisse müssen nicht so sein, wie es wäre
erwartet bei speziellen Gerätedateien mit Zeichen oder bei Dateitypen, die nicht vom System beschrieben werden
Schnittstellenband von POSIX.1‐2008. Da dieser Band von POSIX.1‐2008 die
Blockgröße, die bei der Eingabe verwendet wird, Prüfsummen von speziellen Zeichendateien müssen nicht verarbeitet werden
alle Daten in diesen Dateien.

Der Algorithmus wird in Form eines Bitstroms ausgedrückt, der in Oktette unterteilt ist. Wenn eine Datei
zwischen zwei Systemen übertragen und jeder Datentransformation (wie z
Little-Endian-Byte-Ordering zu Big-Endian) sind keine identischen CRC-Werte zu erwarten.
Implementierungen, die solche Transformationen durchführen, können sich verlängern cksum damit umgehen
Situationen.

Beispiele:


Keiner.

RATIONALE


Als Modell zur Beschreibung des Algorithmus kann das folgende C-Programm verwendet werden. Es
geht davon aus, dass a verkohlen ist ein Oktett. Es wird auch davon ausgegangen, dass die gesamte Datei verfügbar ist für
ein Durchlauf durch die Funktion. Dies wurde der Einfachheit halber getan, um die
Algorithmus und nicht als Implementierungsmodell.

statisch ohne Vorzeichen lange crctab[] = {
0 x 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 x 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 x 34867077, 0x30476dc0,
0x3d044b19, 0x39c556ae, 0x278206ab, 0x23431b1c, 0x2e003dc5,
0x2ac12072, 0x128e9dcf, 0x164f8078, 0x1b0ca6a1, 0x1fcdbb16,
0x018aeb13, 0x054bf6a4, 0x0808d07d, 0x0cc9cdca, 0x7897ab07,
0x7c56b6b0, 0 x 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 x 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, 0x8cf30schlecht, 0x81b02d74,
0x857130c3, 0x5d8a9099, 0x594b8d2e, 0x5408abf7, 0x50c9b640,
0x4e8ee645, 0x4a4ffbf2, 0x470cdd2b, 0x43cdc09c, 0x7b827d21,
0x7f436096, 0x7200464f, 0x76c15bf8, 0x68860bfd, 0x6c47164a,
0 x 61043093, 0x65c52d24, 0x119b4be9, 0x155a565e, 0 x 18197087,
0x1cd86d30, 0x029f3d35, 0x065e2082, 0x0b1d065b, 0x0fdc1bec,
0x3793a651, 0x3352bbe6, 0x3e119d3f, 0x3ad08088, 0x2497d08d,
0x2056cd3a, 0x2d15ebe3, 0x29d4f654, 0xc5a92679, 0xc1683bce,
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)
{
/* Eingabeargumente:
* const unsigned char* b == Bytefolge zur Prüfsumme
* size_t n == Länge der Sequenz
*/

Registergröße_t i;
vorzeichenloses c registrieren, s = 0;

für (i = n; i > 0; −−i) {
c = *b++;
s = (s << 8) ^ crctab[(s >> 24) ^ c];
}

/* Erweitern um die Länge des Strings. */
während (n != 0) {
c = n & 0377;
n >>= 8;
s = (s << 8) ^ crctab[(s >> 24) ^ c];
}

Rückkehr ~s;
}

Die historische Praxis, die Anzahl der ``Blöcke'' zu schreiben, wurde in Schreiben geändert
die Anzahl der Oktette, da letztere nicht nur nützlicher, sondern auch historischer ist
Implementierungen waren nicht konsistent bei der Definition, was ein ``Block'' bedeutet.

Der verwendete Algorithmus wurde ausgewählt, um die Betriebsrobustheit von zu erhöhen cksum. Weder
das System V noch BSD Summe Algorithmus gewählt wurde. Da jedes davon anders war und
jedes war das Standardverhalten auf diesen Systemen, kein realistischer Kompromiss war verfügbar, wenn
beide wurden ausgewählt – einige historische Anwendungen würden nicht mehr funktionieren. Daher ist der Name
wurde geändert in cksum. Obwohl die historischen Summe Befehle werden wahrscheinlich weiterhin sein
seit vielen Jahren bereitgestellt, sollten Programme, die für eine systemübergreifende Portabilität entwickelt wurden, die
neuer Name.

Der ausgewählte Algorithmus basiert auf dem von der Norm ISO/IEC 8802-3:1996 verwendeten
(Ethernet) für das Frame Check Sequence Feld. Der verwendete Algorithmus stimmt nicht mit dem
technische Definition von a Prüfsumme; der Begriff wird aus historischen Gründen verwendet. Die Länge von
die Datei wird in die CRC-Berechnung einbezogen, da dies parallel zur Einbeziehung einer Länge
Feld durch Ethernet in seinem CRC, sondern auch, weil es vor unbeabsichtigten Kollisionen schützt
zwischen Dateien, die mit unterschiedlichen Serien von Null-Oktetts beginnen. Die Chance, dass zwei
unterschiedliche Dateien erzeugen identische CRCs ist viel größer, wenn ihre Länge nicht gleich ist
betrachtet. Wenn Sie die Länge und die Prüfsumme der Datei selbst getrennt halten, erhalten Sie a
etwas robusterer Algorithmus, aber in der Vergangenheit wurde immer verwendet, dass eine einzige Zahl
(die Prüfsumme wie gedruckt) stellt die Signatur der Datei dar. Es wurde beschlossen, dass
Die historische Nutzung war die wichtigere Überlegung.

Frühe Vorschläge enthielten Modifikationen des Ethernet-Algorithmus, die das Extrahieren von
Tabellenwerte, wenn ein Zwischenergebnis Null wurde. Dies erwies sich als weniger
robuster als die derzeitige Methode und mathematisch schwer zu beschreiben oder zu begründen.

Die verwendete Berechnung ist identisch mit der in Pseudocode angegebenen in der referenzierten Sarwate
Artikel. Die Pseudocode-Wiedergabe lautet:

X <− 0; Y <− 0;
für i <− m -1 Step -1 bis 0 do
beginnen
T <− X(1) ^ A[i];
X(1) <− X(0); X(0) <− Y(1); Y(1) <− Y(0); Y(0) <− 0;
wie: f[T] und f'[T] bezeichnen T-th Worte in
Tabelle f und f' ;
X <− X ^ f[T]; Y <− Y ^ f'[T];
Ende

Der Pseudocode wird exakt wie angegeben reproduziert; Beachten Sie jedoch, dass im Fall von cksum,
A [i] stellt ein Byte der Datei dar, die Wörter X und Y werden wie ein einzelnes 32-Bit behandelt
Wert und die Tabellen f und f' sind eine einzelne Tabelle mit 32-Bit-Werten.

Der referenzierte Sarwate-Artikel beschreibt auch das Generieren der Tabelle.

ZUKUNFT RICHTUNGEN


Keiner.

Verwenden Sie cksumposix online mit den onworks.net-Diensten


Kostenlose Server & Workstations

Laden Sie Windows- und Linux-Apps herunter

Linux-Befehle

Ad