Archivi (sola lettura) > Programmazione (Gambas 2)

Criptare e decriptare

(1/2) > >>

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

[#] Pagina successiva

Vai alla versione completa