Feladatok‎ > ‎

Tökéletes rejtjelezés képpel

A tökéletes rejtjelezésről

Matematikailag bebizonyítható, hogy létezik tökéletes rejtjelező, amit lehetetlen feltörni, ha elfogadjuk, hogy létezik valódi véletlen.

Erre egy példa az ún. One-time pad. Lényege, hogy szükségünk van egy, az üzenettel azonos hosszú valódi véletlen bitsorozatra. Ez játssza a kulcs szerepét. A kulcsot mind a küldőnek, mind a fogadónak ismernie kell. Az üzenettel összeXORoljuk a kulcsot, így kapjuk a titkosított üzenetet. Dekódolásnál a titkosított üzenettel ugyanúgy összeXORoljuk a kulccsal.

Példa

Legyen az üzenetünk a 'Tökéletes'. Elsőként alakítsuk át 0-sokra és 1-esekre (Java: String.getBytes())

Kódolás

Tökéletes:   01010100 11000011 10110110 01101011 11000011 10101001 01101100 01100101 01110100 01100101 01110011
Kulcs:       01101010 10101000 01010011 11100110 11001110 01101001 01010011 10111110 01001001 01001000 01000101
XOR:         ^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^^^^
Titkosított: 00111110 01101011 11100101 10001101 00001101 11000000 00111111 11011011 00111101 00101101 00110110

Dekódolás

Titkosított: 00111110 01101011 11100101 10001101 00001101 11000000 00111111 11011011 00111101 00101101 00110110
Kulcs:       01101010 10101000 01010011 11100110 11001110 01101001 01010011 10111110 01001001 01001000 01000101
XOR:         ^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^^^^
Tökéletes:   01010100 11000011 10110110 01101011 11000011 10101001 01101100 01100101 01110100 01100101 01110011

Helyesen működik?

A kódolt-dekódolt üzenet bármilyen üzenet és kulcs esetén megegyezik az üzenettel?

Tökéletes rejtjelezés képpel

Az ötlet az, hogy használjunk egy képet kulcsként! Ha a képnek csak bizonyos részét változtatjuk meg, akkor a változás észrevehetetlen, mégis belekódoltuk az üzenetünket.

Ha minden pixel színének minden komponensét 1-gyel vagy 0-val változtatjuk meg, az szemre egyáltalán nem feltűnő. Ezért a kép pixeleinek komponenseibe xoroljuk az üzenetet!

Írj programot, ami "belexorol" egy képbe egy üzenetet, illetve két kép xorolásából kiszedi az üzenetet.