Kontrollsumma: erinevus redaktsioonide vahel

Eemaldatud sisu Lisatud sisu
JAnDbot (arutelu | kaastöö)
Artikkel kirjutatud, lisatud näited, koodinäited, märkused ja keeletoimetamise viide :P
1. rida:
{{keeletoimeta}}{{TOCright}}
{{ToimetaAeg|kuu=september|aasta=2006}}
'''Kontrollsumma''' on [[informaatika]]s kasutatav mõiste '''räsifunktsiooni tulemist''', millega teostatakse informatsioonihulga võrdväärtuskontroll. Räsifunktsiooni tulemeid iseloomustab üldjuhul<ref>Siinkohal on erandiks "[http://en.wikipedia.org/wiki/Panama_(cryptography) Panama räsifunktsioon]", mille väljundi pikkus pole eelnevalt teada</ref> kindel pikkus olenemata sisendi suurusest ja radikaalne muutus ka kõige väikematele muudatusetele sisendis.
'''Kontrollsumma''' on [[informaatika]]s kasutatav algeline kontrollimise meetod väitmaks, kas edastatud või loetud andmehulgas on vigu või ei.
 
'''Kontrollsumma''' võib viidata ka omaloodud räsifunktsiooni tulemile, mis võib olla äärmiselt primitiivne. Näiteks informatsioonihulga binaarkujul esinevate 1'tede summa.
 
== Kasutusviise ==
Erienvad andmedastus protokollid kasutavad paketi sisu verifitseerimiseks kontrollsummasid. Näiteks näeb [[UDP protokol]]i kihiline ehitus välja:
<div align="left" float="left">
{| class="wikitable"
|-
! +
! colspan="16" width="150px"|Bitt'id 0 - 15
! colspan="16" width="150px"|16 - 31
|- align="center"
! 0
| colspan="16" bgcolor="#FFDDDD"|Algus Port
| colspan="16"|Siht Port
|- align="center"
! 32
| colspan="16"|Pikkus
| colspan="16" bgcolor="#FFDDDD"|Kontrollsumma
|- align="center"
! 64
| colspan="32"|&nbsp;<br />Andmed<br />&nbsp;
|}</div>
 
[[Vaba tarkvara]] kasutab kontrollsummasid verifitseerimaks, kas tarkvara paigaldamise ajal on tegemist sama tarkvaraga, kui see sai loodud. [[Linux]]i distributsiooni allalaadimislehelt võib hea tava kohaselt leida [[CD]]/[[DVD]] [[tõmmis]]e kontrollsumma, kuigi protsess on ka automatseeritud. Näiteks: [http://estobuntu.org/allalaadimine estobuntu].
 
Leidub palju rakendusi, mis salvestavad andmebaasi mitte kasutaja parooli kirje, vaid selle kontrollsumma. Kui kasutaja tahab süsteemi sisseneda, genereeritakse tema sisestatud paroolist uus kontrollsumma ja võrreldakse seda andmebaasis olemasoleva kirjega. Siinkohal meeldetuletus, võhiku jaoks on [[häkker]] inimene, kes saab süsteemi juurdepääsu ilma parooli teadmise vajaduseta.
 
Turvaekspert '''Bruce Schneier''' tõestas [[2005]]'dal aastal [[MD5]] [[algoritm]]i murtavuse<ref>http://www.minut.ee/article.pl?sid=05/03/11/0844201&mode=nested</ref>.
== Näided ==
Järgnevalt on toodud tihemini kasutatavate algoritmide poolt loodud kontrollsummad:
=== Kontrollsummad sõnele "See on räsimise näide.": ===
<pre>
Krüptograafiline räsimine(väljund kuueteistkümnendsüsteemis):
MD2 : 2c53de6f1312dc57e7de46d3a511ef98
MD5 : 1d993b15808c87d5c8cb3a40dd29b2e4
SHA-1 : f48ec5fec1f925d498c5012d363e92c65238bcb1
SHA-256 : 93b43e6e05ba02e5ae3880c8f933cdcb0577c24690d6d1229cf18d369f721431
SHA-384 : e3d558f30371fab08929b054f711d8b76eb1a2385ac0aea4e4714a2b6b94c9542d1f939dad2a1296b9402de446c286c7
SHA-512 : 522cec80580b12d442704991d2116dd2ff9d5319630ccecc4d6b07799126a308ae2e894d1dc20633fe65d652b81c19a9b4c3e3227be3add59226126a22f2aab0
</pre>
=== Kontrollsummad sõnele "See on räsimise näide. "<ref>Lisatud tühik lõppu</ref>: ===
<pre>
Krüptograafiline räsimine(väljund kuueteistkümnendsüsteemis):
MD2 : 8890c19d670e49afe4089d6a478f9a37
MD5 : 84ca345a961e9d7d12d22a729a0b1a32
SHA-1 : 7dce2d2f74c040f3a2ec4a3d95eced7a930823fc
SHA-256 : 1036a6e8f0a53fcbfbcdd3b3d9de8251f47c9077e0e1e9cd34e144ec5e39c4a2
SHA-384 : b1c0f8e4827f414e866b1c48b449005ec25b22b13a4ac8a5e635695dd17fcd5a6924606e8c14d0922fae576cba038bd
SHA-512 : a11bf669b294bdd5bc3eb5b8684140d63d6a0b01cac163331fae090ca02b7214e64301294d9e82a262cca331226c36326e522da8c710377a02be6aebec8a9933
</pre>
 
== Koodinäided ==
=== [[Java]] ===
Java'es<ref>Siinkohal on mõeldud Java JDK 6'te</ref> rakendatud räsifunktioonide kasutamise näide, kontrollimaks eeltoodud näidet:
<source lang="java">import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
 
public class Checksum {
public static String computeDigest(MessageDigest algorithm, String content) {
if (algorithm == null)
return "";
 
return (new BigInteger(1, algorithm.digest(content.getBytes()))).toString(16);
}
 
public static void main(String[] args) {
ArrayList<MessageDigest> algo = new ArrayList<MessageDigest>();
String seetest="See on räsimise näide. ";
String algoritmid[] = {"MD2", "MD5", "SHA-1","SHA-256","SHA-384", "SHA-512"};
try {
for (String s : algoritmid) {
algo.add(MessageDigest.getInstance(s));
}
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
System.exit(-1);
}
System.out.println("Krüptograafiline räsimine(väljund kuueteistkümnendsüsteemis): ");
for (int i = 0; i < algoritmid.length; i++) {
System.out.println(algoritmid[i]+"\t: "+computeDigest(algo.get(i),seetest));
}
}
 
}</source>
=== [[PHP]] ===
PHP's on võimalik lihtsasti kasutada md5 funktsiooni.
<source lang="php"><?php
echo md5("See on räsimise näide. ");
?></source>
== Märkused ==
<references />
 
== Vaata ka ==