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.
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.
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.
Comunque, ci litigai un bel po' di tempo fa e credo che risolsi con una mia libreria.
Solo che adesso devo abbandonare il PC, non sto benissimo. Spero tra un po'. Nel frattempo magari ti aiuteranno altri.
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