Archivi (sola lettura) > Programmazione (Gambas 2)
Criptare e decriptare
clabe69:
Salve; ho la necessità di salvare ID e pasword in un file di testo.
Come faccio a criptarli nel salvataggio e in seguito a decriptarli per l'utilizzo?
Grazie.
fsurfing:
bisognerebbe capir ecosa devi realizzare,
solitamente si cripta una password in modo tale che non possa essere decriptata, per questo gambas fornisce il componente gb.crypt (che devi abilitare)
con la funzione :
passcriptata=crypt.md5(password)
la stringa che ottieni la salvi sul file di testo.
poi se devi usare la pass come accesso al tuo programma , fai digitare la password dall' utente e verifichi che sia uguale a quella cryptata con
Crypt.Check(password_da_verificare, stringa con password criptata)
che ti ritorna true se la pass è valida e false se non lo è
per criptare in modo reversibile devi trovare un programma esterno , visto che gambas non lo fa
clabe69:
Salve; ti spiego: ho due campi, ID e Password, quello che contengono devo salvarlo, (ho pensato di criptarli e metterli in un file di testo). Oltre che verificarli ad ogni tentativo di accesso, e questo può essere fatto con quello che mi hai proposto, devo anche ripresentarli leggibili ogni volta che apro la form di configurazione, dove tra gli altri settaggi, ho anche questi due campi.
Grazie.
clabe69:
Salve; siccome girando per internet non ho trovato niente che potesse servirmi, mi sono messo alla tastiera ed è uscito questo:
--- Codice: ---
' Gambas class file
' Classe creata per criptare e decriptare per mezzo di chiave piccole stringhe
' By Claudio Bernardini
' claudio69@infinito.it
PUBLIC FUNCTION Cod(testo AS String, chiave AS String) AS String
DIM aKey AS NEW Integer[]
DIM aTxt AS NEW Integer[]
DIM a, b AS Integer
DIM iCodice AS Integer
DIM sCodice AS String
DIM bCodP AS String
'converte chiave in array di numeri
FOR a = 1 TO Len(chiave)
aKey.Add(Asc(Mid$(chiave, a, 1)))
NEXT
'converte il testo in array di numeri
FOR a = 1 TO Len(testo)
aTxt.Add(Asc(Mid$(testo, a, 1)))
NEXT
'crea codice
FOR a = 0 TO Len(testo) - 1
FOR b = 0 TO Len(chiave) - 1
bCodP = (aTxt[a] XOR aKey[b])
IF Len(bCodP) < 2 THEN
sCodice &= "0" & bCodP
ELSE
sCodice &= bCodP
ENDIF
NEXT
NEXT
RETURN sCodice
END
PUBLIC FUNCTION Decod(codice AS String, chiave AS String) AS String
DIM sCod AS NEW Integer[]
DIM aKey AS NEW Integer[]
DIM a, b AS Integer
DIM sTxt AS String
'converte chiave in array di numeri
FOR a = 0 TO (Len(codice) / 2) - 1
b = b + 1
IF b > Len(chiave) THEN
b = 1
END IF
aKey.Add(Asc(Mid$(chiave, b, 1)))
NEXT
'riempie array con coppie di valori della chiave
FOR a = 1 TO Len(codice) STEP 2
sCod.Add(Mid$(codice, a, 2))
NEXT
'decodifica codice
b = 1
FOR a = 0 TO (Len(codice) / 2) - 1
DEC b
IF b = 0 THEN
sTxt &= Chr$(sCod[a] XOR aKey[a])
b = Len(chiave)
ENDIF
NEXT
RETURN sTxt
END
--- Termina codice ---
Questa funzione serve per criptare e decriptare stringhe per mezzo di una chiave.
La metto quì, magari può servire a qualcuno, oppure qualcuno potrebbe provarla e consigliarmi qualche buona modifica.
Grazie.
vuott:
--- Citazione da: clabe69 - 13 Febbraio 2012, 13:35:50 ---La metto quì, magari può servire a qualcuno,
--- Termina citazione ---
Bravo. Bene. In questo Forum così ci si comporta: in modo solidale. :coder:
Additum:
Vorrei segnalare questo programmino, progettato da mio fratello, per criptare e decriptare un file:
http://www.gambas-it.org/smf/index.php?topic=2033.0
Navigazione
[0] Indice dei post
Vai alla versione completa