Una SFIDA di crittografia / Algoritmi

Поділитися
Вставка
  • Опубліковано 27 жов 2024

КОМЕНТАРІ • 18

  • @robertoallegra
    @robertoallegra Рік тому +3

    Ok, faccio scoppiare la bomba io scrivendo: "tutti@quei@momenti@andranno@perduti@nel@tempo@come@lacrime@nella@pioggia". La chiave è semplicemente "roy". Colgo l'occasione per farti i complimenti: ti seguo da molto tempo, ma non ho mai commentato finora. Trovo ammirevole il modo in cui ti interfacci con chi ti segue e il tuo impegno e la costanza nel produrre contenuti validi.

    • @1001avventura
      @1001avventura  Рік тому +1

      La bomba è stata disinnescata! Se hai la possibilità di condividere il codice (o il ragionamento) che hai utilizzato, ne parlo in un prossimo video per valutarne la velocità. Complimenti!

    • @robertoallegra
      @robertoallegra Рік тому +1

      @@1001avventura Grazie! Ti ho appena inviato una mail con un link a un repl che mostra come ho fatto a trovare la soluzione, includendo spiegazione, codice, e una paginetta dinamica per risolvere il caso generico.

    • @1001avventura
      @1001avventura  Рік тому +1

      @@robertoallegra grazie mille! Mi risparmi un sacco di lavoro

  • @MrJospic
    @MrJospic Рік тому +2

    In passato mi ero appassionato alla crittografia ed avevo implementato, sul Commodore 64, un algoritmo che utilizzava l'OR esclusivo. Dunque un algoritmo simmetrico che era reversibile, quindi crittografava e decrittografava mediante lo stesso codice di programmazione. L'assembly del 6502 supporta l'operatore "eor" che implementa nativamente l'or esclusivo (xor) tra due operandi.
    Sul basic standard del C64 tale operatore non è disponibile ma si può ovviare con una operazione di emulazione: xor = (x or y) and not (x and y).
    Per rimembrare il passato ho scritto il semplice codice in allegato. La stringa crittografata è scritta tra apici in quanto l'operazione boolean tra il carattere del testo e il corrispondente carattere della chiave potrebbe ricadere nei famosi "control codes" tipici dei computer della famiglia Commodore e dunque la stampa della stringa potrebbe essere illeggibile poiché potrebbe eseguire alcune funzioni di layout del C64, come pulizia dello schermo, spostamento del cursore, ecc. Probabilmente si potrebbe ovviare stampando i codici ascii numericamente e non attraverso la rappresentazione grafica (chr$). A presto.
    10 rem crypto algorithm with exclusive or (eor in assembly 6502)
    20 rem in basic emulated by (x OR y) AND NOT (x AND y)
    30 input "testo: ";t$
    40 input "chiave: ";k$
    45 lt = len(t$)
    50 lk = len(k$)
    60 z$ = chr$(34)
    70 ct=1
    80 for i=1 to lt
    90 t=asc(mid$(t$,i,1))
    100 k=asc(mid$(k$,ct,1))
    110 z = ((t or k) and not (t and k))
    120 z$ = z$ + chr$(z)
    130 ct=ct+1
    140 if ct>lk then ct=1
    150 next
    160 z$ = z$ + chr$(34)
    170 print z$

    • @1001avventura
      @1001avventura  Рік тому

      Sembra facile da implementare in Assembly. La prossima settimana si fa interessante!

    • @1001avventura
      @1001avventura  Рік тому

      E grazie per il codice

    • @MrJospic
      @MrJospic Рік тому

      @@1001avventura Grazie a te per gli spunti sempre interessanti che proponi su questo bel canale. 👍😉

  • @rapyros
    @rapyros Рік тому +1

    Ieri sera ero troppo cotto dalla stanchezza, comunque anch'io ci sono arrivato! Ti ho mandato la mia soluzione in email. Saluti!!! 😉

    • @1001avventura
      @1001avventura  Рік тому +1

      Complimenti! Siete addirittura tre che mi avete detto di averci provato (e ci siete pure riusciti). Pensavo che nessuno accettasse la sfida. Grazie per l'email

    • @rapyros
      @rapyros Рік тому +1

      @@1001avventura Grazie a te che dimostri sempre grande apertura verso la community e questo non è da poco. Sei un grande! 💪

  • @rapyros
    @rapyros Рік тому +1

    Buonasera, sono 2 ore che mi scervello... sono arrivato a: "wadioi". Domanda... sono sulla buona strada?

    • @1001avventura
      @1001avventura  Рік тому

      Cos'è wadioi? La chiave? È più corta.

    • @1001avventura
      @1001avventura  Рік тому +1

      E complimenti per Rcrypt. Non ci sarei mai arrivato senza spiegazione.

    • @rapyros
      @rapyros Рік тому

      @@1001avventura Grazie🙂

    • @rapyros
      @rapyros Рік тому +1

      ci riprovo ma non credo di farcela 😞

  • @lucamagni67
    @lucamagni67 Рік тому +1

    Salve,
    mi permetto di mettere qui una versione TASM (piccola e semplice) del cifrario di Cesare.
    Magari puo' tornare utile per il corso in assembly X86.
    P.S: Per quanto riguarda la crittografazione in generale si potrebbe fare accenno anche alla Steganografia.
    Complimenti.
    Luca Rigamonti
    .MODEL small
    .STACK
    .DATA
    TestoInChiaro DB "Mille e un'avventura",0Dh,0Ah,'$'
    TestoCifrato DB 32 DUP (?),0Dh,0Ah,'$'
    ShiftCesare EQU 3
    .CODE
    MAIN PROC FAR
    MOV AX, @data
    MOV DS, AX
    MOV SI, OFFSET TestoInChiaro
    MOV AX, DS
    MOV ES, AX ; Let ES = DS
    MOV DI, OFFSET TestoCifrato
    CLD
    MOV CX, 32
    @@Loop1:
    LODSB
    ADD AL, ShiftCesare
    MOV [ES:DI], AL
    INC DI
    LOOP @@Loop1
    MOV DX, OFFSET TestoInChiaro
    MOV AH, 9
    INT 21h
    MOV DX, OFFSET TestoCifrato
    MOV AH, 9
    INT 21h
    TerminateProgram:
    MOV AX, 04C00h
    INT 21h
    MAIN ENDP
    END MAIN