Salve a tutti io ho creato una funzione aggiungicar che serve per aggiungere dei caratteri in più in una stringa in base ad una password(si tratta di una funzione da utilizzare in un programma di
crittografia) che ricevo in input e funziona nel seguente modo:
Riceve in input il testo e una chiave
*Analizza il testo per trovare il codice ascii massimo e minimo contenuto nel testo
*Legge il testo e la chiave carattere per carattere
*Se il codice ascii della chiave è divisibile per 2 o per 7 allora al testo aggiunge un carattere creato a caso con il codice ascii compreso tra il massimo e il minimo, altrimenti passa al
carattere successivo.
[code]
Public Function aggiungicar(chiave As String, ByVal testo As String) As String
Dim t As String
le = Len(testo)
lc = Len(chiave)
'analizzo il testo
maxi = 0
mini = 255
For i = 1 To Len(testo)
va = Asc(Mid$(testo, i, 1))
If va < mini Then mini = va
If va > maxi Then maxi = va
Next
For i = 1 To le
If c < lc Then c = c + 1 Else c = 1
ch = Asc(Mid$(chiave, c, 1)) 'valore chiave
t = t & Mid$(testo, i, 1) 'lettera testo
If ch Mod 2 = 0 Or ch Mod 7 = 0 Then
Randomize Timer
ca = Int((maxi - mini + 1) * Rnd + mini)
t = t & Mid$(testo, i, 1)
t = t & Chr$(ca)
Else
t = t & Mid$(testo, i, 1)
End If
Next
aggiungicar=t
End Function
[\code]
E questo codice funziona perfettamente. Il problema è che ora devo creare anche la funzione
in grado di fare il contrario, ovvero una volta ricevuto il testo con i caratteri in più e la password
(che deve essere la stessa che è stata usata per la funzione aggiungicar) "ripulisca il testo e
mi restituisca la stringa di partenza. Io ho creato questa funzione ma non funziona
correttamente
[code]
Public Function toglicar(ByVal chiave As String, ByVal testo As String) As String
Dim t As String
le = Len(testo)
lc = Len(chiave)
For i = 1 To le
ii = ii + 1
If c < lc Then c = c + 1 Else c = 1
ch = Asc(Mid$(chiave, c, 1)) 'valore letto dalla chiave
If ch Mod 2 <> 0 And ch Mod 7 <> 0 Then t = t & Mid$(testo, ii, 1)
Next
toglicar = t
End Function
[\code]
Ad esempio utilizzando come testo "testo di prova" e come password "prova" ottengo:
testo di prova
tfeVstGo ^doi RprRo<va%
applicando ora la funzione toglicar al testo e utilzzando come password "prova" dovrei riottenere:
testo di prova
C'è qualcuno che può darmi una mano???
Ringrazio anticipatamente chiunque riesca ad aiutarmi
Ciao, Andrea