Italian [B4J] SQLite con dati crittografati

Elric

Well-Known Member
Licensed User
Ciao a tutti!

l'obiettivo è quello.

Ora, con queste
B4X:
Private Sub EncryptString(myString As String) As String
    Dim myEncryptedDataByte() As Byte
    Dim c As B4XCipher
    myEncryptedDataByte = c.Encrypt(myString.GetBytes("utf-8"), strPassword)
  
    Dim su As StringUtils
    Return su.EncodeBase64(myEncryptedDataByte)
End Sub

Private Sub DecryptString(myString As String) As String
    Dim myByteToBeDecrypted() As Byte
    Dim su As StringUtils

    myString = DeEscapeField(myString) 'Sub per eliminare eventuali parentesi quadre all'inizio e alla fine del record
  
    If IsNumber(myString) Then ' Per i casi in cui bisogna leggere i rowid e dati non crittografati
        Return myString
    Else
        Try
            myByteToBeDecrypted = su.DecodeBase64(myString)
        Catch
            Log(LastException)
        End Try
  
        Dim c As B4XCipher
        Try
            Dim b() As Byte = c.Decrypt(myByteToBeDecrypted, strPassword)
        Catch
            Log(LastException)
        End Try
      
        Try
            Private myString2 As String = BytesToString(b, 0, b.Length, "utf-8")
        Catch
            Log(LastException)
        End Try
    End If
  
    Return myString2
  
End Sub
riesco a gestire agevolmente la crittografia e la decrittografia.

Il problema mi sorge quando uso "WHERE" e "ORDERBY". Dato che io passo il dato in chiaro ma lui cerca tra dati crittografati, non ho il risultato sperato.

Qualcuno si è già cimentato?

Avete alternative?

Stavo pensando: creo una classe e decritto in runtime tutte le tabelle ma dove le inserisco? In una TableView? È possibile? Non l'ho mai usata.
 

Elric

Well-Known Member
Licensed User
Qualcosa ti impedisce di passare parametri crittografati?
Ci avevo pensato ma non funziona perché la stessa stringa viene crittografata in maniera diversa di volta in volta (vedi progettino relativo solo alla crittografia e non anche all'implementazione in DB).

Come funziona nel dettaglio non te lo saprei spiegare perché non sono un esperto.
 

Attachments

  • TableExample.zip
    2.8 KB · Views: 56
Upvote 0

LucaMs

Expert
Licensed User
Longtime User
1675616714485.png


P.S.
Ah, adesso ho visto che c'è. Ma non stai parlando di B4J?
 
Upvote 0

Elric

Well-Known Member
Licensed User
Scusa. In quanto test c'era un po' di confusione.

Ho aggiornato il file.

Solo che adesso devo abbandonare il PC, non sto benissimo. Spero tra un po'. Nel frattempo magari ti aiuteranno altri.
Ok, grazie intanto. Riposati.
 
Upvote 0

LucaMs

Expert
Licensed User
Longtime User
Scusa. In quanto test c'era un po' di confusione.

Ho aggiornato il file.


Ok, grazie intanto. Riposati.
Sto meglio ma... evidentemente i miei due neuroni no, perché nel progetto che hai allegato non vedo crittografie (👓 ?)

Cmq, tra poco mi metterò alla ricerca sul PC di cosa feci al riguardo, ma è passato parecchio tempo; speriamo bene :)
 
Upvote 0

Fulvio75

Well-Known Member
Licensed User
Ciao mi collego a questo per chiedere una info, ho un db SQLite protetto da password, è passato un po' di tempo e non mi ricordo più come ho fatto, sicuro per inserire la password ho usato un visualizzatore che mi permetteva di farlo.
Ora non ho più ne il visualizzatore idoneo, ne mi ricordo quella c.... di password che ho inserito, ho inserito di tutto date, parolacce, insulti ma nulla, cosa posso fare? Esiste qualche cosa che lo apre?
Grazie
 
Upvote 0
Top