Condividi:        

Crittografia concetto per programmino

Come rimuovere virus e spyware? Le carte di credito sono davvero sicure in rete? È possibile navigare anonimi? Con quali programmi tutelare la propria privacy? Come proteggere i file importanti? Se volete una risposta a queste e altre domande questo è il luogo giusto!

Moderatori: m.paolo, kadosh, Luke57

Crittografia concetto per programmino

Postdi bertolauser » 01/08/04 18:20

Linguaggio : nessuno di specifico mi serve solamente il concetto

L'algoritmo che devo replicare fa questo:


----> testo
----> chiave ( generata casualmente , stessa lunghezza del testo)

a b c d e f g h i j k l m n o p q r s t u v w x y z

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

Testo

c ---> 3
i ---> 9
a ---> 1
o ---> 15

Chiave

t ---> 20
u ---> 21
j ---> 10
c ---> 3

Testo criptato

c + t = 3 + 20 ---> 23 = w
i + u = 9 + 21 ---> 30 = d
a + j = 1 + 10 ---> 11 = k
o + c = 15 + 3 ---> 18 = r

testo criptato = "wdkr"


Quindi io ho fatto questo:

in un 'array è contenute le lettere

Array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z")


avviene questo:

viene immesso il testo
viene generata la chiave

-----------------------------

viene formato il testo criptato

nell'array ci sono 25 elementi ( contando il primo come 0)

avviene però un inconveniente

che talvolta sommando gli elementi si va al di fuori del 25 ( è ciò non è bello siccome da un errore che tutti voi conoscerete -.- )
( esempio: testo = z (pos = 25) chiave = y (pos = 24) risultato ==> y
( pos 49)

quindi io ripercorro , mettiamo che venga 27 ( la z è 25 ) allora il valore è logicamente b e assegno al testo criptato il valore 1


il fatto è che quando si fa Chiave meno Testo criptato ( per tornare al valore in chiaro ) otteniamo un valore diverso per via del cambio di valore effettuato.

esempio:


Testo in chiaro:


c --------> 2
i --------> 8
a --------> 0
o --------> 14

chiave

i --------> 8
u --------> 20
b --------> 1
u --------> 20


Testo criptato

10
28 --------> (28 -26) (si ripercorre l'array) --> 2
1
34 --------> (34 -26) --------------------------> 8



Ma come ora vedrete questo cambio si rivela infelice:

posizione chiave

8
20
1
20

posizione testo_criptato

10
2
1
8

Testo chiaro

8 - 10 => -2 -> c
20 - 2 => 18 -> s
1 - 1 => 0 -> i
20 - 8 => 12 -> m


( il negativo viene trasformato in positivo tanto è uguale)

csim ---> non è ciao (!)

consiglio su come fare ?

se sei arrivato a leggere fino a qua sei 1 eroe -.-
bertolauser
Utente Junior
 
Post: 13
Iscritto il: 26/03/04 19:26

Sponsor
 

Postdi hydra » 02/08/04 07:18

Io ho realizzato per la tesina delle superiori un programma simile, che criptava cioè un testo con una chiave. Il metodo usato è quello di Vigenere. Fai così, invece di assegnare alla lettera un numero, assegna il suo codice ascii (ti ricordo che in un testo c'è anche la punteggiatura, la distinzione tra maiuscole e minuscole, spazi ecc.). Se vuoi appena lo recupero ti posto l'algoritmo che genera le stringhe cifrate e quello che le decifra, è testato su file di testo molto lunghi e funziona perfettamente. Dimmi se ti può interessare. ;)
Avatar utente
hydra
Moderatore
 
Post: 7007
Iscritto il: 19/07/04 08:06
Località: Vallis Duplavis

Re: Crittografia concetto per programmino

Postdi Dylan666 » 02/08/04 10:36

bertolauser ha scritto:se sei arrivato a leggere fino a qua sei 1 eroe -.-


Grazie! :D
Volendo considerare il programmino come un lodevole esercizio (cioè è chiaro che non ci cripti i documenti dei servizi segreti, con tutto il rispetto! :D :P ) direi che l'errore è concettuale. Cioè non se ne viene fuori a meno che non alzi il numero dei possibili numeri risultanti dalla somma lettera + chiave a 51 cifre differenti (da 0 a 50) considerando come valore massimo lettera Z (25) e chiave Z (25) (oppure, se non si può bluffare mettendo come chiave la stessa lettera, 49 cioè Z (25) + W (24) ).
Solo così puoi evitare facilmente le duplici attribuzioni di valori numerici alle lettere che poi disorientano il processo di decriptazione. ;)
Purtroppo vado di corsa e non posso verificare l'esattezza del mio ultimo consiglio ma prova a moltiplicare l'array per 2 aumentare le cifre come detto prima in questo modo:


Array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z","a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z")

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50

In questo modo in Z dovrebbe essere tradotto sia come 25 che come 50.
Sempre per il problema delle ripetizioni che NON ci devono essere costruisci unaltro array per la chiave (altrimenti se gli dici di aggiungere "Z" non sa se mettere 25 o 50...).

Spero di aver detto cose errate dato che sono ancora insonnolito :P :) :lol:
Avatar utente
Dylan666
Moderatore
 
Post: 40118
Iscritto il: 18/11/03 16:46

Postdi hydra » 02/08/04 13:00

Ammesso che tu riesca a dimensionare un array con più oggetti uguali (non ho mai provato ma non penso si possa), in ogni caso il compilatore si prende il primo che trova, e quindi il 25. Ascolta me, lavora coi codici ascii e vai sul sicuro, basta che tu faccia questa semplice equazione:
255 AND (testo[i]+chiave[i]).
In questo modo sei sicuro che anche se arrivi all'ultimo char fai il giro e riprendi da 0. E' la strada più veloce e sicura.
Per il ritorno devi fare così:
255 AND (testo_cifrato[i]-chiave[i])

Provare per credere.

Due consigli:
1) funziona solamente con i file di testo (ASCII)
2) fare attenzione che lo spazio (32) + una lettera maiuscola la stessa lettera però minuscola (se io ho per chiave CIAO e trovo 4 spazi consecutivi, al posto dei 4 spazi una volta cifrato avrò ciao) :)
Avatar utente
hydra
Moderatore
 
Post: 7007
Iscritto il: 19/07/04 08:06
Località: Vallis Duplavis

Postdi hydra » 02/08/04 13:02

hydra ha scritto:2) fare attenzione che lo spazio (32) + una lettera maiuscola la stessa lettera però minuscola (se io ho per chiave CIAO e trovo 4 spazi consecutivi, al posto dei 4 spazi una volta cifrato avrò ciao) :)


fare attenzione che lo spazio (32) + una lettera maiuscola DA la stessa lettera però minuscola.

Sorry.. ;) [/b]
Avatar utente
hydra
Moderatore
 
Post: 7007
Iscritto il: 19/07/04 08:06
Località: Vallis Duplavis

Postdi Dylan666 » 02/08/04 15:00

Non per "somontarti" ma...
hydra ha scritto:Ammesso che tu riesca a dimensionare un array con più oggetti uguali (non ho mai provato ma non penso si possa),

Certo che si può, gli array sono liste di vettori, quello che rende univoco ciascuno di essi è l'indice...

in ogni caso il compilatore si prende il primo che trova, e quindi il 25.

Non hai capito quello che intendevo fare. ;)

Se ho tempo lo faccio in javascript.

Ora bertolauser non so se è una lieta coincidenza (sarebbe veramente incredibile) ma ti consiglio di dare un'occhiata a questo gioco... potrebbe piacerti ;)

http://www.pc-facile.com/security/codebreak.php
Avatar utente
Dylan666
Moderatore
 
Post: 40118
Iscritto il: 18/11/03 16:46

Postdi hydra » 02/08/04 15:34

Ho detto ammesso che si possa fare perchè non mi è mai capitato di inserire duplicati in un array. Cmq se ho z=25 e z=50, quando gli dico prendi z lui prende 25 perchè è il primo che trova, se mom ti da errori. Cmq guarda il codice ascii è la cosa più efficace, tieni conto che un testo (prendi questo post) ha dentro di tutto e cifrare solo le lettere è una cosa poco saggia, se uno ha a disposizione punteggiatura, spazi e simboli non ci mette molto a decifrare il messaggio di SOLO TESTO. Inoltre viene molto più semplice cifrare tutto invece di star la a prendere un intervallo di caratteri. ;)

Fidati, le due funzioni che ho postato prima sono giuste e SEMPLICI. Come ho detto in precedenza questo argomento è stata la mia materia d'esame, quindi lo studio c'è stato (non credere che non abbia pensato anch'io di cifrare solo il testo). Inoltre risparmi righe di codice (non serve che mi dichiari l'array, non serve che controlli in che posizione è, se io scrivo perchè con la è devo dichiarare anche è, se lo scrivo perche' devo dichiarare '. Se devo star la a farmi il mazzo per dichiarare tutto, allora perchè non utilizzare il codice ascii che ha dentro tutto?). Cmq se la tua idea è diversa e pensi sia altrettanto funzionale aspetto volentieri il tuo post, così mi aggiorno e poi penso che anche bertolauser avrà materia di studio. :D :D :D
Avatar utente
hydra
Moderatore
 
Post: 7007
Iscritto il: 19/07/04 08:06
Località: Vallis Duplavis

Postdi Dylan666 » 02/08/04 16:02

hydra ha scritto:Ho detto ammesso che si possa fare perchè non mi è mai capitato di inserire duplicati in un array.


Sì ma non è una cosa che va a esperimenti, è alla base del concetto di array... vorrei sembrarti pignolo... ma è così 8)

Cmq guarda il codice ascii è la cosa più efficace, tieni conto che un testo (prendi questo post) ha dentro di tutto e cifrare solo le lettere è una cosa poco saggia, se uno ha a disposizione punteggiatura, spazi e simboli non ci mette molto a decifrare il messaggio di SOLO TESTO. Inoltre viene molto più semplice cifrare tutto invece di star la a prendere un intervallo di caratteri. ;)


Ho capito ma qui tu stai stravolgendo in programma! Il progetto iniziale prevedeva una criptazione a sostituzione monoalfabetica e tu ci hai messo in mezzo punti e gruppi di lettere. Ho capito che è migliore, ma se avesse voluto che uno gli facesse una criptazione sicura si sarebbe scaricato un programma apporito o sarebbe partito con l'MD5... Aveva chiesto solo un piccolo suggerimento èer fare una cosa IN UNA CERTA MANIERA ;)

Fidati, le due funzioni che ho postato prima sono giuste e SEMPLICI. Come ho detto in precedenza questo argomento è stata la mia materia d'esame, quindi lo studio c'è stato (non credere che non abbia pensato anch'io di cifrare solo il testo). Inoltre risparmi righe di codice (non serve che mi dichiari l'array, non serve che controlli in che posizione è, se io scrivo perchè con la è devo dichiarare anche è, se lo scrivo perche' devo dichiarare '. Se devo star la a farmi il mazzo per dichiarare tutto, allora perchè non utilizzare il codice ascii che ha dentro tutto?)



Allora per onor del vero la soluzione più semplice (sempre a sostituzione monoalfabetica) è la seguente (sempre in javascript per poterla far verificare a tutti):

Codice: Seleziona tutto
<HTML>
<HEAD>
<script language="JavaScript">
function rot_13(obj)
{
  var keycode = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  var text    = new String(obj.form.Text.value)
  var rot13 = new String()

  for(var i = 0; i < text.length; i++)
  {
    var codechar = text.substring(i, i + 1)
    var pos = keycode.indexOf(codechar.toUpperCase())

    if(pos >= 0)
    {
      pos      = (pos + keycode.length / 2) % keycode.length
      codechar = (codechar == codechar.toUpperCase()) ?
                 keycode.substring(pos, pos + 1) :
                 keycode.substring(pos, pos + 1).toLowerCase()
    }
    rot13 = rot13 + codechar
  }
  obj.form.Text.value = rot13
}
</script>
</HEAD>


<BODY>
<form>
<textarea name="Text" rows=10 cols=80 wrap=soft>Scrivi il testo da criptare o decriptare</textarea><br>
<input type=button value="ROT-13 Cripta/Decripta" onClick="rot_13(this)">
</form>
</BODY>
</HTML>


La chiave è 13. Avrei postato questo se avessi voluto fare nel modo più facile, ma intendevo rispettare la volontà del "programmatore" che ha voluto con gli array (magari perché è agli inizi), anche perché non sai se li deve richiamare in altre parti del programma o se è finito tutto lì ;)
Avatar utente
Dylan666
Moderatore
 
Post: 40118
Iscritto il: 18/11/03 16:46

Postdi bertolauser » 02/08/04 16:22

we

non pensavo di ricevere cosi tante risposte -.-

Cmq dylan alla possibilità di moltiplicare l'array ci avevo pensato pure io , raddoppi i valori ma finisci fuori =


Cmq dylan dicevi che di sicuro non ci criptano i dati governativi:

vero !


Però secondo un teorema di matematica questo algoritmo è inviolabile con un attacco di forza bruta -.-

Primo ogni lettera ha una sua K indipedente , quindi tanto il numero di lettere aumenta tanto il testo crittografato diviene indecifrabile
bertolauser
Utente Junior
 
Post: 13
Iscritto il: 26/03/04 19:26

Postdi bertolauser » 02/08/04 16:26

vi posto il codice e vi indico dove ho il problema

--------- visual basic ----------------




scala = Array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", " ", vbCrLf)

' inseriamo il testo
testo = Me.text


'controlliamo la lunghezza del testo
lunghezza = Len(testo)


' mettiamo il testo in un array

For i = 1 To lunghezza

y = Mid(testo, i, 1)

For x = 0 To 27

If y = scala(x) Then

text(i) = x

End If

Next x

Next i

' calcoliamo la chiave ( il random arriva fino a 25 cosi evito lo spazio 'e 'l'invio)
i = 1
Do While (i <= lunghezza)
casuale = Int((25 * Rnd) + 1)
chiave(i) = casuale

i = i + 1
Loop

' siccome con il precedente for mettiamo una sequenza casuale di numeri , trasformiamo la sequenza numerica nella
' chiave scritta


chiave_generata = ""

For i = 1 To lunghezza

chiave_generata = chiave_generata + scala(chiave(i))

Next





' ora si calcola il testo criptato

For x = 1 To lunghezza
crypt(x) = CInt(text(x)) + CInt(chiave(x))

---------------------------------------------------------------------
-------------------------------------------------------------------
è qua che ho il problema , non voglio che ci siano
del testo criptato invii e spazi , quindi ricalcolo la chiave
e il testo criptato , solo che non capisco dove è l'errore,
tutte le lettere che finiscono li dentro sono canate
------------------------------------------------------------
---------------------------------------------------------

If crypt(x) = 26 Or crypt(x) = 27 Then


For i = 0 To 1000

If crypt(x) = 26 Or crypt(x) = 27 Then

chiave(x) = Int((25 * Rnd) + 1)
crypt(x) = CInt(text(x)) + CInt(chiave(x))

Else



Exit For
End If
Next i
End If





If crypt(x) > 27 Then
crypt(x) = crypt(x) - 28
End If



Next x

Open "C:\controlla.txt" For Output As #1
Print #1, "crittato"; vbCrLf; crittato; vbCrLf; "crittato_ventotto"; crittato_ventotto;
Close #1
'check key

' --------------------------------------------------- Non guardare ora
For i = 0 To lunghezza

check_key = check_key + "-" + CStr(chiave(i))

Next


'check text

For i = 0 To lunghezza

check_text = check_text + "-" + CStr(crypt(i))

Next

'-------------------------------------------------------------------------------


' si trasforma il testo criptato(numerico) ---> testo criptato(letterale)

testo_definitivo = ""
For i = 1 To lunghezza
y = scala(crypt(i))
testo_definitivo = testo_definitivo + y
Next




Open "C:\key.txt" For Output As #1
Print #1, "Chiave generata"; vbCrLf; "----------------------------------------- Enry_Key -----------------------------------------"; vbCrLf; vbCrLf; "|"; chiave_generata; "|"; "-----"; check_key; vbCrLf; vbCrLf; vbCrLf; "--------------------------------------- End Enry_Key ---------------------------------------"; vbCrLf; vbCrLf; vbCrLf; vbCrLf; "--------------------------------------------------------------------------------------------------"; vbCrLf; "Testo criptato"; vbCrLf; "--------------------------------------------------------------------------------------------------"; vbCrLf; vbCrLf; vbCrLf; vbCrLf; "|"; testo_definitivo; "|"; "------"; check_text; ""
Close #1










End Sub



bertolauser
Utente Junior
 
Post: 13
Iscritto il: 26/03/04 19:26

Postdi hydra » 02/08/04 16:32

Se è a sostituzione monoalfabetica la soluzione più semplice è sicuramente quella del 3d. Io ho solo detto questo: se ho il problema di farlo solo con le lettere e dopo il 25 ho problemi perchè devo andare a vedere dove vado a cadere, l'equazione è quella che ho postato solo che invece di 255 (il numero di char dell'ascii) metto 25 (il numero di lettere che ho). Tutto qua. Poi ho detto, visto che è una cosa piuttosto banale cifrare solo le lettere, facciamolo di tutti i caratteri possibili, quindi ricorriamo al codice ascii. Che poi uno lo faccia in Java come te o che lo faccia in VBNet o C# come me, cambia solo il linguaggio di programmazione. Il problema sollevato da bertolauser è quello ideato da un tal Blaise de Vigenère che si basa su una tabella 26X26. Io devo comunque una volta arrivato alla Z ripartire dalla A, e sia che io vada a fare una sottrazione, una divisione o un AND, devo recuperare la lettera giusta. Non dico che la tua soluzione sia sbagliata, ma il problema era di tornare dentro dopo la Z. Se tu fai un AND con gli estremi giusti non sfori neanche se vuoi. ;)
Avatar utente
hydra
Moderatore
 
Post: 7007
Iscritto il: 19/07/04 08:06
Località: Vallis Duplavis

Postdi hydra » 02/08/04 16:36

Visto che il programma lo fai in VB (6? VBNet?) ti posto la funzione che ho utilizzato per cifrare un carattere

Public Function CryptChar(ByVal Org As Char, ByVal Key As Char) As Char
Dim Rest As Char

Rest = Chr(255 And (Asc(Org) + Asc(Key)))
Return (Rest)

End Function

Per decifrare fai -. Dopo che hai composto le stringhe puoi in un for chiamare la funzione passando come parametro stringa(i), chiave(i)

Prova e fammi sapere, se ti servono consigli sul VB sono a disposizione.
Avatar utente
hydra
Moderatore
 
Post: 7007
Iscritto il: 19/07/04 08:06
Località: Vallis Duplavis

Postdi hydra » 02/08/04 17:04

Una cosa: se la chiave la generi a random, devi scriverla da qualche parte altrimenti è molto difficile che tu riesca a tornare al testo originale. ;) Cmq ho trovato il codice del programma che fa le tue stesse cose, se ti interessa fammi sapere (giusto per avere una traccia) :) :) :)
Avatar utente
hydra
Moderatore
 
Post: 7007
Iscritto il: 19/07/04 08:06
Località: Vallis Duplavis

Postdi bertolauser » 02/08/04 17:14

sisi viene generata in un file di testo
-.-

cmq nel tuo script quale è la chiave ??

ke garanzie da ??

byez
bertolauser
Utente Junior
 
Post: 13
Iscritto il: 26/03/04 19:26

Postdi Dylan666 » 02/08/04 19:32

Blaise de Vigenère lo consco pure io (bertolauser ma lo hai visto il lìmio link al gioco?), e sempre per la gioia di chi non ha compilatori posto lo script di criptazione e decriptazione in javascript, sperando che serva di ispirazione anche a coloro che usano altri linguaggi dato che non ho tempo di trasportare il codice:

http://digilander.libero.it/salsi/critt ... alfabetica

Inoltre per dovere di cronaca rettifico la precedente asserzione (credevo che le 4 chiavi usate nel primo posta fossero di 4 esempi diversi, non avevo fatto caso venissero usate tutte insieme per la parola CIAO) dicendo che parliamo di algoritmi di sostituzione polialfabeticama che comunque agiscono lettera a lettera e senza simboli.

PS per hydra: <<Che poi uno lo faccia in Java come te...>>

Non Java, ma Javascript, sempre cose concettualmente molto diverse ;)
Avatar utente
Dylan666
Moderatore
 
Post: 40118
Iscritto il: 18/11/03 16:46

Postdi Dylan666 » 02/08/04 20:17

Avatar utente
Dylan666
Moderatore
 
Post: 40118
Iscritto il: 18/11/03 16:46

Postdi bertolauser » 03/08/04 07:25

Scusa 1 cosa ma nel link ke mi hai dato

Esempio: parola chiave: "CIAO", messaggio in chiaro:

SI ATTACCA DOMANI.

Messaggio crittato:

UQ AHVICQC LOACVI.


Invece nel programma ke ho fatto io KIAVE = TESTO

quindi mi sa ke non è sto Blaise de Vigenère , oppure è un caso particolare 8)
bertolauser
Utente Junior
 
Post: 13
Iscritto il: 26/03/04 19:26

Postdi hydra » 03/08/04 07:58

bertolauser ha scritto:Scusa 1 cosa ma nel link ke mi hai dato

Esempio: parola chiave: "CIAO", messaggio in chiaro:

SI ATTACCA DOMANI.

Messaggio crittato:

UQ AHVICQC LOACVI.


Invece nel programma ke ho fatto io KIAVE = TESTO

quindi mi sa ke non è sto Blaise de Vigenère , oppure è un caso particolare 8)


Anche CIAO è un testo o sbaglio? Come chiave puoi inserire un testo che vuoi tu. Per farti un'idea del metodo vedi un po' qua:
http://www.liceofoscarini.it/studenti/crittografia/critto/vigenere.htm http://www.tonycrypt.com/Crittografia/Vigenere.htm, ma se fai una ricerca con google ne trovi un sacco.

Per Dylan666: scusa, intendevo dire Javascript. Non sono esperto del campo e pensavo fosse la stessa cosa. ;)
Avatar utente
hydra
Moderatore
 
Post: 7007
Iscritto il: 19/07/04 08:06
Località: Vallis Duplavis

Postdi hydra » 03/08/04 08:19

bertolauser ha scritto:cmq nel tuo script quale è la chiave ??



Il mio script cifra un carattere con chiave = carattere. Se vuoi cifrare una stringa devi in un ciclo chiamare length volte questa funzione passando come parametro l'i-esimo carattere della stringa. Ad esempio:

For I=0 to Length(Str)
ResStr(I)=CryptChar(Str(I), Key(I))
Next

La chiave può essere un testo lungo quanto vuoi. Alla fine ResStr contterrà la stringa originale cifrata con la chiave Key. ;)
Avatar utente
hydra
Moderatore
 
Post: 7007
Iscritto il: 19/07/04 08:06
Località: Vallis Duplavis

Postdi hydra » 03/08/04 10:15

hydra ha scritto:
bertolauser ha scritto:cmq nel tuo script quale è la chiave ??



Il mio script cifra un carattere con chiave = carattere. Se vuoi cifrare una stringa devi in un ciclo chiamare length volte questa funzione passando come parametro l'i-esimo carattere della stringa. Ad esempio:

For I=0 to Length(Str)
ResStr(I)=CryptChar(Str(I), Key(I))
Next

La chiave può essere un testo lungo quanto vuoi. Alla fine ResStr contterrà la stringa originale cifrata con la chiave Key. ;)


Per farti un esempio concreto di quanto ti ho detto ti posto il mio post precedente cifrato secondo il metodo descritto:

ÒÈŸÚÐÏÊáØÕÕM΃ÜÏ×Ùס՛ƒvvrzÆš×
Avatar utente
hydra
Moderatore
 
Post: 7007
Iscritto il: 19/07/04 08:06
Località: Vallis Duplavis

Prossimo

Torna a Sicurezza e Privacy


Topic correlati a "Crittografia concetto per programmino":


Chi c’è in linea

Visitano il forum: Nessuno e 45 ospiti

cron