-Principiante-
Devo salvare nel REGISTRO un testo di lunghezza variabile (probabilmente molto LUNGO). Il testo prima di essere registrato deve essere CRIPTATO. La criptazione deve essere fatta in base alla scelta di una password. Visto che la stringa di valore è troppo lunga e quindi nel registro alla fine della stringa compaiono i puntini (…) ho diviso la stringa da criptare in pezzetti. (ps.: quant’è la lunghezza massima di caratteri che può contenere una chiave?)
Non riesco a decriptarlo in modo esatto: mettiamo il caso che nel registro ho 3 pezzi; il primo me lo decripta esatto poi magari nel secondo mi recupera solo il primo carattere della stringa e non capisco il perché. Come mai non va? Dove sbaglio? Se non va bene questo mi suggerite un altro codice? Mi fate un esempio?
codice:
‘
passw=”PASSWORDDIPROVA”
const caratteri=100 ‘ quanti char deve contenere ogni log
quantipezzi = Len(stringadacriptare) / caratteri ‘ ottengo il numero di pezzi
If quantipezzi > Int(quantipezzi) Then ' arrotonda a +1 se ce la virgola
quantipezzi = Int(quantipezzi) + 1
End If
A = 0
For I = 1 To quantipezzi
popo = Mid(stringadacriptare, A + 1, caratteri) ‘
A = A + caratteri
Call Crypt(passw, popo)
Call savestring(HKEY_CURRENT_USER, "SOFTWARE\" & App.EXEName , "Pezzo " & I, popo)
Next
codice:
Sub Crypt(passw, strg)
a = 1
For I = 1 To Len(strg)
b = Asc(Mid$(pass, a, 1))
a = a + 1
If a > Len(pass) Then a = 1
Mid$(strg, I, 1) = Chr$(Asc(Mid$(strg, I, 1)) Xor b)
Next
End Sub
Pe la decriptazione recupero il valore x il Pezzo 1 e ripeto l’operazione x tutti gli altri pezzi.
codice:
okg = GetString(HKEY_CURRENT_USER, "SOFTWARE\" & App.EXEName , "Pezzo 1")
Call Crypt(passw, okg)
MsgBox okg