Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Obecná podpora => Téma založeno: Katsushiro 22 Března 2015, 21:18:26
-
Ahoj všichni!
Ve škole jsme měli jako jeden z 6ti bodů zadání napsat skript, který z hashů dvou zašifrovaných binárních souborů spočítá, kolik bitů se liší - jeden ze souborů je poškozený a takhle se to má dokázat. Vůbec ale netuším, jak se dá na Linuxu něco takového udělat (nedělám to kvůli tomu jednomu bodu, zbylých 5 mám, opravdu mě to zajímá)?
Zkoušel jsem příkaz cmp, ale ten mi vyhodil, že se liší 1 byte, což je prý blbě, má to být mnohem víc.
Hash generuji pomocí příkazu: openssl dgst -sha256 SOUBOR
Moc děkuji za veškeré rady,
Katsu
-
Taky by me zajimalo jak se sifruje pomoci SHA... a jak z vysledku odvodit puvodni obsah.
Nejdriv si ujasni termity...
-
Ok, to s šifrováním byla fakt blbost, to je tak, když to člověk píše s přestávkama :-) O odvozování obsahu zpětně nikde nic nevidím :-[
Jinak mě napadlo, že bych získal hashe pomocí sha256sum a ty pak prostě porovnal, počet jiných bytů by snad mohl stačit...
-
je jedno, o kolik se lisi. I nepatrna zmena na vstupu (napr. zmena jednoho bitu) vede k velke zmene na vystupu. Realne staci porovnat, jestli jsou ty retezce stejne, v tom jsou soubory binarne stejne. O kolik se pripadne lisi, na to nemas sanci prijit, pokud jde o ten hash. Jedine pak porovnat ten soubor bit po bitu.
$ echo abc > soubor1
$ echo abb > soubor2 # lisi se o jeden bit
$ echo abc > soubor3 # stejny jako prvni
$ sha256sum soubor1 soubor2 soubor3
edeaaff3f1774ad2888673770c6d64097e391bc362d7d6fb34982ddf0efd18cb soubor1
3fe1a3938782c0fb2bf47746f2ba9e5a56ecab2afc57589b4cc97713e00b3bb4 soubor2
edeaaff3f1774ad2888673770c6d64097e391bc362d7d6fb34982ddf0efd18cb soubor3