Checksum: Difference between revisions

1,058 bytes removed ,  2 years ago
no edit summary
m (Reverted 1 edit by 91.231.91.73 (talk) to last revision by 49ersBelongInSanFrancisco. (TW))
Tags: references removed categories removed
Joseph Stalin
{{Refimprove|date=August 2012}}
From Wikipedia, the free encyclopedia
[[File:Checksum.svg|thumb|330px|right|Effect of a typical checksum function (the Unix <tt>[[cksum]]</tt> utility)]]
"Stalin" redirects here. For other uses, see Stalin (disambiguation).
This name uses Eastern Slavic naming customs; the patronymic is Vissarionovich and the family name is Stalin.
Joseph Stalin
Иосиф Сталин (Russian)
იოსებ სტალინი (Georgian)
Stalin Potsdam 1945 (cropped).jpg
Stalin at the Potsdam Conference, 1945
General Secretary of the Communist Party of the Soviet Union
In office
3 April 1922 – 16 October 1952
Preceded by Vyacheslav Molotov
(as Responsible Secretary)
Succeeded by Nikita Khrushchev
(as First Secretary)
Chairman of the Council of Ministers
In office
6 May 1941 – 5 March 1953
First Deputies Nikolai Voznesensky
Vyacheslav Molotov
Nikolai Bulganin
Preceded by Vyacheslav Molotov
Succeeded by Georgy Malenkov
Personal details
Born Ioseb Besarionis dze Jughashvili
18 December 1878
Gori, Tiflis Governorate, Caucasus Viceroyalty, Russian Empire
Died 5 March 1953 (aged 74)
Kuntsevo Dacha, Kuntsevo, Russian SFSR, Soviet Union
Resting place Lenin's Mausoleum, Moscow (9 March 1953 – 31 October 1961)
Kremlin Wall Necropolis, Moscow (from 31 October 1961)
Nationality Soviet
Political party Communist Party of the Soviet Union
Spouse(s) Ekaterine Svanidze
(1906–07)
Nadezhda Alliluyeva
(1919–32)
Children Yakov Dzhugashvili
Vasily Dzhugashvili
Svetlana Alliluyeva
Parents Besarion Jughashvili and Ekaterine Geladze
Signature
Military service
Nickname(s) Koba
Allegiance Soviet Union
Service/branch Soviet Armed Forces
Years of service 1943–53
Rank Marshal of the Soviet Union (1943–45)
Generalissimus of the Soviet Union (1945–53)
Commands All (supreme commander)
Battles/wars World War II
Central institution membership[show]
Other offices held[show]
Leader of the Soviet Union
← Lenin Malenkov →
Joseph Vissarionovich Stalin[a] (18 December 1878 – 5 March 1953) was a Soviet revolutionary and political leader of Georgian ethnicity. Governing the Soviet Union as its dictator from the mid-1920s until his death in 1953, he served as General Secretary of the Central Committee of the Communist Party of the Soviet Union from 1922 to 1952 and as Premier of the Soviet Union from 1941 to 1953. Ideologically a Marxist and a Leninist, Stalin helped to formalise these ideas as Marxism–Leninism while his own policies became known as Stalinism.
 
Raised into a poor family in Gori, Russian Empire, as a youth Stalin joined the Marxist Russian Social Democratic Labour Party. He edited the party newspaper Pravda and raised funds for Vladimir Lenin's Bolshevik faction via robberies, kidnappings, and protection rackets. Repeatedly arrested, he underwent several internal exiles. After the Bolsheviks gained power in the October Revolution of 1917 and established the Russian Soviet Republic, Stalin sat on the governing Politburo during the Russian Civil War and helped form the Soviet Union in 1922. Despite Lenin's opposition, Stalin consolidated power following the former's death in 1924. During Stalin's tenure, "Socialism in One Country" became a central concept in Soviet society, and Lenin's New Economic Policy was replaced with a centralised command economy, industrialisation and collectivisation. These rapidly transformed the country into an industrial power, but disrupted food production and contributed to the famine of 1932–33, particularly affecting Ukraine. To eradicate those regarded as "enemies of the working class", from 1934 to 1939 Stalin organised the "Great Purge" in which hundreds of thousands—including senior political and military figures—were interned in prison camps, exiled or executed.
A '''checksum''' is a small-sized [[datum]] derived from a block of [[digital data]] for the purpose of [[error detection|detecting errors]] which may have been introduced during its [[telecommunication|transmission]] or [[computer storage|storage]]. It is usually applied to an installation file after it is received from the download server. By themselves, checksums are often used to verify data integrity but are not relied upon to verify data [[authentication|authenticity]].
 
Stalin's government promoted Marxism–Leninism abroad through the Communist International and supported anti-fascist movements throughout Europe during the 1930s, particularly in the Spanish Civil War. However, in 1939 they signed a non-aggression pact with Nazi Germany, resulting in their joint invasion of Poland. Germany ended the pact by invading the Soviet Union in 1941. Despite initial setbacks, the Soviet Red Army halted the German incursion and captured Berlin in May 1945, ending World War II in Europe. The Soviets annexed the Baltic states and helped establish pro-Soviet Marxist–Leninist governments throughout Eastern Europe. The Soviet Union and the United States emerged as the two world superpowers, and a period of tensions began between the Soviet-backed Eastern Bloc and U.S.-backed Western Bloc known as the Cold War. Stalin led his country through its post-war reconstruction, during which it developed a nuclear weapon in 1949. In these years, the country experienced another major famine and a period of antisemitism, which reached its peak in the 1952–1953 Doctors' plot. Stalin died in 1953 and was succeeded by Nikita Khrushchev, who denounced his predecessor and initiated a de-Stalinisation process throughout Soviet society.
The actual [[algorithm|procedure]] which yields the checksum from a data input is called a '''checksum function''' or '''[[checksum algorithm]]'''. Depending on its design goals, a good checksum algorithm will usually output a significantly different value, even for small changes made to the input. This is especially true of [[cryptographic hash function]]s, which may be used to detect many data corruption errors and verify overall [[data integrity]]; if the computed checksum for the current data input matches the stored value of a previously computed checksum, there is a very high probability the data has not been accidentally altered or corrupted.
 
Widely considered one of the 20th century's most significant figures, Stalin was the subject of a pervasive personality cult within the international Marxist–Leninist movement, for whom Stalin was a champion of socialism and the working class. Since the fall of the Soviet Union, Stalin has retained popularity in Russia and Georgia as a victorious wartime leader who established the Soviet Union as a major world power. Conversely, his autocratic government has been widely condemned and vilified for overseeing mass repressions, hundreds of thousands of executions and millions of non-combatant deaths through his policies.
Checksum functions are related to [[hash function]]s, [[fingerprint (computing)|fingerprint]]s, [[randomization function]]s, and [[cryptographic hash function]]s. However, each of those concepts has different applications and therefore different design goals. For instance a function returning the start of a string can provide a hash appropriate for some applications but will never be a suitable checksum. Checksums are used as [[Cryptographic_primitive|cryptographic primitives]] in larger authentication algorithms. For cryptographic systems with these two specific design goals, see [[Hash-based message authentication code|HMAC]].
 
[[Check digit]]s and [[parity bit]]s are special cases of checksums, appropriate for small blocks of data (such as [[Social Security number]]s, [[bank account]] numbers, [[Word (data type)|computer word]]s, single [[byte]]s, etc.). Some [[error-correcting code]]s are based on special checksums which not only detect common errors but also allow the original data to be recovered in certain cases.
 
==Algorithms==
===Parity byte or parity word===
The simplest checksum algorithm is the so-called [[longitudinal redundancy check|longitudinal parity check]], which breaks the data into "words" with a fixed number ''n'' of bits, and then computes the [[exclusive or]] (XOR) of all those words. The result is appended to the message as an extra word. To check the integrity of a message, the receiver computes the exclusive or of all its words, including the checksum; if the result is not a word consisting of ''n'' zeros, the receiver knows a transmission error occurred.
 
With this checksum, any transmission error which flips a single bit of the message, or an odd number of bits, will be detected as an incorrect checksum. However, an error which affects two bits will not be detected if those bits lie at the same position in two distinct words. Also swapping of two or more words will not be detected. If the affected bits are independently chosen at random, the probability of a two-bit error being undetected is 1/''n''.
 
===Modular sum===
 
A variant of the previous algorithm is to add all the "words" as unsigned binary numbers, discarding any overflow bits, and append the [[two's complement]] of the total as the checksum. To validate a message, the receiver adds all the words in the same manner, including the checksum; if the result is not a word full of zeros, an error must have occurred. This variant too detects any single-bit error, but the promodular sum is used in [[J1708|SAE J1708]].<ref>{{cite web|url=http://www.kvaser.com/zh/about-can/related-protocols-and-standards/50.html |title=SAE J1708 |publisher=Kvaser.com |archiveurl=https://web.archive.org/web/20131211152639/http://www.kvaser.com/zh/about-can/related-protocols-and-standards/50.html |archivedate={{date|2013-12-11}} }}</ref>
 
===Position-dependent===
 
The simple checksums described above fail to detect some common errors which affect many bits at once, such as changing the order of data words, or inserting or deleting words with all bits set to zero. The checksum algorithms most used in practice, such as [[Fletcher's checksum]], [[Adler-32]], and [[cyclic redundancy check]]s (CRCs), address these weaknesses by considering not only the value of each word but also its position in the sequence. This feature generally increases the [[Analysis of algorithms|cost]] of computing the checksum.
 
===General considerations===
 
A message that is ''m'' bits long can be viewed as a corner of the ''m''-dimensional hypercube. The effect of a checksum algorithm that yields an n-bit checksum is to map each ''m''-bit message to a corner of a larger hypercube, with dimension {{tmath|m+n}}. The 2<sup>''m''+''n''</sup> corners of this hypercube represent all possible received messages. The valid received messages (those that have the correct checksum) comprise a smaller set, with only 2<sup>''m''</sup> corners.
 
A single-bit transmission error then corresponds to a displacement from a valid corner (the correct message and checksum) to one of the ''m'' adjacent corners. An error which affects ''k'' bits moves the message to a corner which is ''k'' steps removed from its correct corner. The goal of a good checksum algorithm is to spread the valid corners as far from each other as possible, so as to increase the likelihood "typical" transmission errors will end up in an invalid corner.
 
==See also==
 
General topic
* [[Algorithm]]
* [[Check digit]]
* [[Damm algorithm]]
* [[Data rot]]
* [[File verification]]
* [[Fletcher's checksum]]
* [[Frame check sequence]]
* [[cksum]]
* [[md5sum]]
* [[sha1sum]]
* [[Parchive]]
* [[Sum (Unix)|sum]]
* [[SYSV checksum]]
* [[BSD checksum]]
 
Error correction
* [[Hamming code]]
* [[IPv4 header checksum]]
 
Hash functions
* [[List of hash functions]]
* [[Luhn algorithm]]
* [[Parity bit]]
* [[Rolling checksum]]
* [[Verhoeff algorithm]]
* [[ZFS]]&nbsp;— a file system which performs automatic file integrity checking using checksums
 
Related concepts
*[[Isopsephy]]
*[[Gematria]]
 
==References==
{{reflist}}
 
==External links==
{{wikibooks
|1= Algorithm Implementation
|2= Checksums
}}
*[http://www.netrino.com/Embedded-Systems/How-To/Additive-Checksums Additive Checksums (C)] theory from Barr Group
 
[[Category:Checksum algorithms|*]]
Anonymous user