Autore Topic: Criptare e decriptare  (Letto 3368 volte)

Offline clabe69

  • Gambero
  • **
  • Post: 50
    • Mostra profilo
Criptare e decriptare
« il: 10 Febbraio 2012, 21:14:55 »
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.

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Criptare e decriptare
« Risposta #1 il: 10 Febbraio 2012, 21:26:54 »
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

Offline clabe69

  • Gambero
  • **
  • Post: 50
    • Mostra profilo
Re: Criptare e decriptare
« Risposta #2 il: 10 Febbraio 2012, 23:12:03 »
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.

Offline clabe69

  • Gambero
  • **
  • Post: 50
    • Mostra profilo
Re: Criptare e decriptare
« Risposta #3 il: 13 Febbraio 2012, 13:35:50 »
Salve; siccome girando per internet non ho trovato niente che potesse servirmi, mi sono messo alla tastiera ed è uscito questo:

Codice: [Seleziona]
' 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

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.

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.253
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Criptare e decriptare
« Risposta #4 il: 13 Febbraio 2012, 14:36:43 »
La metto quì, magari può servire a qualcuno,
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
« Ultima modifica: 09 Marzo 2012, 20:28:59 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Criptare e decriptare
« Risposta #5 il: 13 Febbraio 2012, 15:32:59 »
Salve; siccome girando per internet non ho trovato niente che potesse servirmi, mi sono messo alla tastiera ed è uscito questo:

Codice: [Seleziona]
' 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

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.

Ma rimane il fatto che,  ameno che non inserisci un altro campo per immettere la chiave, tu dovrai tenerla nel codice del software....il codice è leggibile e pertanto le tue password sono facilmente reperibili....

Una delle soluzioni può essere creare una cifratura della somma delle stringhe di username e password da confrontare al momento de bisogno. Così perderai la possibilità di modificare username e password perchè non potrai vederle in chiaro ma avrai qualche grado di sicurezza in più....

Oppure uso il sistema proposto da fsurfing che poi è quello che utilizzano molti siti per permetterti il login....

Offline clabe69

  • Gambero
  • **
  • Post: 50
    • Mostra profilo
Re: Criptare e decriptare
« Risposta #6 il: 14 Febbraio 2012, 17:14:53 »
Ciao; si sicuramente è come dici, ma a me non serve un alto grado di protezione, deve solo evitare che qualche pseudoscenziato smanettone entri nella configurazione del programma che stò scrivendo.
Poi se capita, quello che sà leggere il codice, allora sono certo che non farà danni se riesce ad entrare nel, molto più semplice, settaggio del mio softwere.
Comunque, penso che seguiro il tuo consiglio di aggiungere un campo nascosto da una particolare sequenza di qualcosa, per poter modificare la chiave.
Però poi come la salvo?  :hard:
Potrei nasconderla in un lungo file di testo, oppure nel database del programma.

Che ne pensate?

Offline andy60

  • Senatore Gambero
  • ******
  • Post: 1.256
    • Mostra profilo
    • https://www.linkedin.com/in/andbertini
Re: Criptare e decriptare
« Risposta #7 il: 30 Dicembre 2014, 09:10:53 »
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


Riprendo questa discussione, molto interessante. La tua soluzione mi piace, unico problema è dove mettere il file di testo con la passw criptata. Qualche consiglio?

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.253
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Criptare e decriptare
« Risposta #8 il: 02 Dicembre 2016, 10:47:28 »
 :)
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »