Newsgroup: it.comp.lang.visual-basic
Titolo: [?] criptare una stringa





Ricordo un thread tempo fa ma non lo trovo 
più.


Ho una var p="pippo".


Voglio criptarla, come faccio?


Mi sembra di ricordare che c'era un metodo semplice usando 
XOR, ma non sono riuscito ad utilizzarlo con una stringa; usando i singoli 
caratteri mi restituisce dei numeri enormi.


 


Qualcuno sa aiutarmi?


Grazie in anticipo.


 



Riposto in formato NON html, scusate.


bč basta un po di fantasia...........
io utilizzerei (ingenuamente ;) la funz. ASC ovvero prima trasformerei tutti
i caratteri nei corrispettivi valori numerici, quindi per ogni carattere
attuerei un'operazione matematica che mi dia un valore intero (aggiungi
sottrai moltiplichi quello che vuoi) quindi alternerei il valore ottenuto
con un numero generato a caso compreso tra 0 e 255 quindi ritrasformerei
ogni numero nel corrispettivo carattere........
tipo
PIPPO = Ł_F$%F°?%=
--
ALEX 77 ----------------------------------------------
www.digital-sat.net
------------------------------------------------------------

 PIPPO = £_F$%F°?%=
Ho provato io un metodo simile... Mi spiego. Ho creato una matrice con 255
item ogni uno dei quali contenente un numero, al momento della criptazione
trasformo ogni lettera della stringa nel carattere ASCII dopodichè richiamo
la matrice es:
c=chr(tabella_caratteri(asc(p)))
Fin qui è facile, ma dopo per decriptarla ho passato un sacco di guai.
Praticamente il problema è dover trovare in quale posizione della matrice si
trova un dato carattere per poterlo decriptare... Al che mi son detto:
<<facile! Basta implemetare una fuzione che con un ciclo for..next
restituisca il numero di indice corrispondente alla posizione del numero
nella matrice>>, questo metodo funziona perfettamente nelle stringhe piccole
ma non appena ho provato a criptare stringe lunghe (300, 400 caratteri) è
apparso il problema che per ogni carattere la cpu doveva eseguire un ciclo
for...next su tutta la matrice rallentando la procedura di decriptazione
tanto che avvolte ci vogliono anche 60/70 secondi per decriptarla! A questo
punto mi son dovuto fermare perchè non sono più riuscito a risolvere il
problema :(((
Antonio Mirarchi



 trova un dato carattere per poterlo decriptare...
Creati anche una matrice inversa di quella che usi per la crittazione.
Semplicemente, posto che Cripta(0 to 255) è la matrice di crittazione che tu
hai già compilato, e Decripta(0 to 255) quella di decrittazione che devi
creare, fai:
For r=0 to 255
   Decripta(Cripta(r))=r
Next
Poi per decrittare la stringa, fai:
StringaDecrittata=""
For r=1 to Len(StringaDaDecrittare)
    StringaDecrittata=StringaDecrittata &
Chr$(Decripta(Asc(Mid$(StringaDaDecrittare,r,1))))
Next
Comunque utilizzare un semplice codice "A lettera uguale corrisponde cifra
uguale" come fa la settimana enigmistica, non ti risolve i problemi di
sicurezza.
Dovresti inventarti qualche algoritmo che si basi anche sulle posizioni del
carattere all'interno della stringa e aggiungere dei caratteri fittizi in
posizioni fisse, che poi potrai eliminare quando decritti la stringa.
Si tratta sempre di vedere quanto è importante la sicurezza del dato. In
realtà algoritmi completamente sicuri non ne esistono.
Per quanto sia furbo il tuo algoritmo, se il gioco vale la candela, basta
disassemblarsi il tuo codice e attaccarsi all'output della routine di
decrittazione per avere il risultato bello e pronto, senza neppure avere
bisogno di sapere come funziona l'algoritmo di crittazione. Certo che se non
sei una banca, è difficile che tu abbia di questi problemi...
Ciao
*Roby*

Io ho utilizzato questo tempo addietro.........
Private Sub crypta(dove As Integer)
Text3.Text = " "
Text3.Text = "Apertura File temporaneo in corso........."
Open "tempfile.sys" For Output As #1
    Write #1, Text1.Text
Close #1
Text3.Text = "Chiusura File temporaneo in corso........"
Text3.Text = "Elaborazione in corso........"
Open "tempfile.sys" For Input As #1
    Do While Not EOF(1)
    carattere = Input(1, #1)
    codice = Asc(carattere)
    codice = codice - 1
    carattere = Chr(codice)
    Text2.Text = Text2.Text & carattere
    carattere = Chr(Int((250 * Rnd) +3))
    Text2.Text = Text2.Text & carattere
    Loop
Close #1
Select Case dove
    Case 1
        Text3.Text = "Salvataggio in corso......."
        Open "crypto.txt" For Output As #1
        Write #1, Text2.Text
        Close #1
        Text3.Text = "Eliminazione file temporaneo in corso..."
        Kill ("tempfile.sys")
    Case 2
        Clipboard.SetText Text2.Text
        Text3.Text = "Eliminazione file temporaneo in corso..."
        Kill ("tempfile.sys")
End Select
Text3.Text = "Crypt completato con successo........"
End Sub
E funzionava........
sappimi dire......


sei una banca, è difficile che tu abbia di questi problemi...
per la serie winice (softice) ed il caro vecchio assembler
P.

 sappimi dire......
SI ma non risolve il problema della sicurezza!! Anche io ho utilizzato una
cosa tipo asc(carattere)^2 ma non è un granché...
Antonio Mirarchi

[cut]
Vabbè mica dobbiamo criptare i dati della CIA!!!!!!
Antonio Mirarchi