Egy dokumentum (fájl) tartalmazhatja a saját checksum összegét?
Arra gondolok, hogy a fájlban úgy van benne a saját ellenőrző összege, hogy az összeg kiszámításakor a teljes fájlt, a benne lévő összeget is figyelembe kell venni.
Létezik ehhez algoritmus?
Pl. fájl: "HelloWorld_11001100" -> checksum: 11001100
Nem.
Mármint véletlenül biztosan, szándékosan nem fogod tudni megcsinálni.
Meg lehet valósítani.
De a hagyományos checksum algoritmusokkal (mint például a CRC32) nehéz rendesen megoldani. Azokkal csak úgy lehet, hogy:
- Kiszámolod a dokumentum CRC checksumját.
- Elmented egy másik fájlba.
- Plusz ebbe a fájlba bele írod a dokumentumot is.
Ellenőrzésnél:
- A fájl elején levő CRC értéket kihagyod, és csak a fájl többi részére számolod ki a CRC-t.
- Ha a kiszámolt CRC egyezik a fájlt elején levő CRC-vel, akkor nem volt módosítva a dokumentum.
Ha rendesebben akarod megoldani, akkor valami ilyesmi algoritmussal megoldható:
- Végig mész a dokumentum bájtjain, és 4 bájtonként átalakítod egész számmá. Ezeket a számokat össze adod.
- Kitalálsz egy tetszőleges konstanst. Például: 1234567890
- Az 1234567890-ből kivonod azt az összeget, amit előzőleg kaptál. Így megkapod a checksum-ot.
- Beírod a checksum-ot a dokumentum elejére.
Ellenőrzésnél:
- Végig mész a dokumentum bájtjain, és 4 bájtonként átalakítod egész számmá. Ezeket a számokat össze adod.
- Ha az összeg egyezik a 1234567890-vel, akkor nem volt módosítva a dokumentum.
Elképesztő mekkora gányolásokat tudnak egyesek kitalálni.
Elképesztő.
Miért ne tartalmazhatná, természetesen tartalmazhatja a checksumot, persze ez azt feltételezi, hogy saját file formátumot használsz. Kiszámolod a teljes állományra a checksum értéket es hozzáírod a file végéhez.
Ebben semmi ördöngösség nincs.
"Miért ne tartalmazhatná, természetesen tartalmazhatja a checksumot, persze ez azt feltételezi, hogy saját file formátumot használsz. Kiszámolod a teljes állományra a checksum értéket es hozzáírod a file végéhez.
Ebben semmi ördöngösség nincs."
Kivéve annyi, hogy miután szépen hozzáírtad a fájlhoz, onnantól kezdve a fájlnak teljesen más checksumja van. Innentől kezdve, ha ellenőrizni akarod, akkor ki kell szedned a fájlból és úgy újra számolnod.
Akkora baromság, hogy komolyan mondom egyeseket egy életre el kéne tiltani a programozástól.
Nem véletlenül szokás a checksumot a fájl mellé elhelyezni és nem bele... Mi olyan bonyolult ezen megérteni?
8: Alapvetően kétféle checksum képzés használatos. Az egyik egy sima összeadás, ahol a checksum az adott bitszélességre csonkolt összeg lesz. A másik, ahol a checksum e csonkolt érték nullára történő kiegészítő különbségi értéke lesz. Ez utóbbi esetben a teljes file adatait összegzed _beleértve_ a file végéhez írt különbségi értéket. Ha nullát kapsz, akkor file ok, ha nem, akkor valami gáz van.
Ilyen egyszerű.
De ha a sima összeadós eljárást követjük: biztos kur va bonyolult a file végén 4 bájtot fixen fenntartani checksum-nak, amit nem adsz hozzá visszaellenőrzéskor az összeghez.
Persze, inkább írd egy külön fájlba, úgy biztos egyszerűbb... zsenikém. Látom, te is nagy kódguru vagy..
"biztos kur va bonyolult a file végén 4 bájtot fixen fenntartani checksum-nak, amit nem adsz hozzá visszaellenőrzéskor az összeghez.
Persze, inkább írd egy külön fájlba, úgy biztos egyszerűbb... zsenikém. Látom, te is nagy kódguru vagy.."
Tudod, a checksum lényege, hogy egy file, mint összefüggő adathalmaz koherenciáját biztosítsa. Ha te ahhoz hozzáírsz, akkor megváltoztatod a tartalmat.
Lehetne éppen azt is, amit te írsz, csak hát, valamiért nem lett gyakorlat. Talán nem véletlenül.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!