Esercizi di Decodifica II

« Older   Newer »
 
  Share  
.
  1. Mark109K
        +1   -1
     
    .
    Avatar

    Shinichi-Kudo

    Group
    Administrator
    Posts
    571
    Reputation
    +1,093
    Location
    Passchendaele

    Status
    Anonymous
    Visto che il codice è stato alla fine risolto (a pagina 1 potete provare a risolverlo), vi lascio qui la soluzione completa e una mia descrizione di come l'ho creato, per poter anche analizzare come si poteva operare anche in modi differenti.


    Soluzione Tabella CX26
    Come precedentemente detto , questo codice è sostanzialmente un testo scritto in una tabella di 26 righe e 26 colonne. Il testo va steso da sinistra a destra e completata una riga vi prosegue scrivendo in quella successiva. Per motivi di più celere comprensione ho pensato di lasciare una casella di spazio vuoto ad ogni parola. Tuttavia a causa di un errore di riscrittura non l'ho fatto alla riga 16 alle caselle 21/22 , (il che spiega ance il motivo per cui all'ultima riga rimangono 2 caselle vuote anziché una.) Ma nulla toglie alla decodifica che rimane (o dovrebbe - potrebbero esserci errori di trascrizione vista la lunghezza , ma molto difficile) invariata.
    Creazione del codice
    Come precedentemente detto , il testo scritto prima viene stilato lungo la tabella. Successivamente si passa all'operazione di codifica.
    Il sistema utilizzato è quello di Vigenere. L'unica differenza è che anziché utilizzare come verme una sola lettera , oppure una sola parola (es. VERME , che va dunque a ripetersi --> VERMEVERMEVERME .... e così via) ho deciso , di porre un verme per l'intera lunghezza del testo. Come ha fatto ben notare ImFederico in un precedente messaggio , il codice si avvicina molto al cifrario di Vernam , dove appunto si utilizza una chiave lunga quanto il messaggio. In queste situazioni se non si possiede la chiave diventa quasi impossibile , ma utilizzando le dimensioni della tabella , si poteva rendere il tutto molto più intuitivo (ovvero l'utilizzo come chiave dell'intero alfabeto che si stende riga per riga ).
    Fig.1
    jpg
    La codifica a questo punto consiste solamente nella somma dei valori della lettera del verme nella casella con quella del messaggio , come in un cifrario di Vigenere. Dal momento che non si può fare l'operazione in trasparenza ,ai margini della tabella ho provveduto a mettere l'alfabeto e dunque i corrispondenti numeri per poter codificare. In questo modo avendo la prima lettera della riga è come avere l'indice numerico da cui partire ; per le successive basta aumentare il valore casellare , e poi utilizzarlo per codificare.
    Fig.2
    jpg
    Dopo aver eseguito le operazioni , si giunge al codice "codificato" del primo messaggio.
    Decodifica
    Partendo da :
    jpg
    si prende il valore numerico di ogni lettere in casella e lo si sottrae al valore della lettera del verme.
    Alla prima casella --> Codificato J --> n.10
    Verme A --> n.1
    10-1 = 9 --> I
    Quando ci si trova nella situazione in cui Lettera Codificata sottratta a Lettera Verme , dia come risultato un numero negativo , occorre sommare il risultato a 26 , per poter far rientrare il valore in quelli dell'alfabeto.

    Dopo questi calcoli si giunge dunque al codice sorgente:
    Fig.4


    Anomalie
    1. Visto che il verme viene ripetuto non solo sull'asse delle righe ma anche su quello delle colonne , si può notare che le lettere uguali si ripetono in diagonale. In questo modo con la lettera Z , che si ripete centralmente , aggiunge il suo valore numerico 26 , che annulla tutto il calcolo poiché aggiunge un intero nuovo alfabeto alla lettera sorgente , che dunque rimane invariata
    Fig.5
    jpg

    2.Trattandosi di un alfabeto , i valori numerici aumentano consecutivamente di +1 : Avendo nel codice madre due lettere consecutive con la prima con valore precedente alla seconda , nel codificato si avranno due valori e quindi lettere identiche.

    "Filosofia" del codice
    Quando ho cominciato a stendere il codice ( purtroppo per me senza conoscere a fondo l'esistenza di Vernam) , ho interpretato il codice stesso come una "tavola" divisa in zone con livelli d'aumento diversi: Quando una lettera ci cade sopra , viene aumentata del livello della casella della tavola. Per questo due lettere uguali su una stessa riga , non avranno lo stesso finale. Se immaginate questa tavola in tredimensione , otterrete due semipiramidi in orizzontale , con le basi congiunte.
    Fig.6
    jpg
    Fatemi sapere cosa ne pensate

    I vincitori sono:
    Lie to Me , e SweetBoson che hanno completato correttamente più di 2 righe . Assegnati a loro un +1


    Edited by Shinichi-Kudo - 2/4/2019, 21:20
     
    Top
    .
137 replies since 13/3/2015, 19:02   3140 views
  Share  
.