Spanish Ayuda con Gestión de Contraseña

DATASOFT (SOLUSOFT S A)

Member
Licensed User
Longtime User
ok apenas estoy empapándome en el tema la idea principal seria algo como:
1. tener una base de datos montada en un servidor web (ya hice un par de ejemplitos de esto)
2. tener una base en sqlite propia del teléfono
3. conectar la base de datos web a la sqilite (esto lo quiero hacer 1 vez a la semana o lapsos asi mas o menos grandes)
aqui viene la verdadera pregunta

¿Como puedo "Guardar" la cuenta creada en la cache,memoria interna una vez "validada"?
teniendo en cuenta que esta validación la deseo volver a realizar pasada 1 semana por ejemplo.
 
Last edited:

DATASOFT (SOLUSOFT S A)

Member
Licensed User
Longtime User
no me explique digamos que en la base de datos web hay un montón de usuarios y contraseñas. cuando en la aplicación se introduzca una cuenta "valida" se copie el usuario y contraseña en la base de datos del mismo móvil o en la memoria interna o donde sea conveniente (la verdad aun no lo se). con el fin que el usuario no tenga que llenar esta información cada vez que ejecute la aplicación
 

vampirbcn

Active Member
Licensed User
Longtime User
Ok, yo normalmente en estos casos guardo estos datos sensibles encriptados en un archivo de texto.

Utilizo las librerias byteconverter y encryption.

Para ello utilizo las siguientes funciones de encriptación:
B4X:
Sub Encrypt(dataToEncrypt As String, password As String ) As String
    Dim kg As KeyGenerator
    Dim c As Cipher
    Dim B64 As Base64
    Dim Bconv As ByteConverter
    Dim data(0) As Byte
    Dim iv(0) As Byte
    Dim md As MessageDigest
   
    iv = Array As Byte(11, 22, 33, 42, 55, 1, 7, 88) ' 16 bytes for AES
    c.Initialize("DESEDE/CBC/PKCS5Padding")   
    c.InitialisationVector = iv
    kg.Initialize("DESEDE")
    kg.KeyFromBytes(md.GetMessageDigest(password.GetBytes("UTF8"), "MD5"))
'    kg.KeyFromBytes(md.GetMessageDigest(password.GetBytes("ASCII"), "MD5"))
    data = Bconv.StringToBytes(dataToEncrypt, "ASCII")       
'    data = Bconv.StringToBytes(dataToEncrypt, "UTF8")       
    data = c.Encrypt(data, kg.Key, True)               
    Return B64.EncodeBtoS(data, 0, data.Length)
End Sub

Sub Decrypt(encryptedData As String, password As String ) As String
    Dim kg As KeyGenerator
    Dim c As Cipher
    Dim B64 As Base64
    Dim Bconv As ByteConverter
    Dim data(0) As Byte
    Dim iv(0) As Byte
    Dim md As MessageDigest
   
    If encryptedData.Trim<>"" Then
        Try
            iv = Array As Byte(11, 22, 33, 42, 55, 1, 7, 88) ' 16 bytes for AES
            c.Initialize("DESEDE/CBC/PKCS5Padding")   
            c.InitialisationVector = iv
            kg.Initialize("DESEDE")   
            kg.KeyFromBytes(md.GetMessageDigest(password.GetBytes("UTF8"), "MD5"))
'            kg.KeyFromBytes(md.GetMessageDigest(password.GetBytes("ASCII"), "MD5"))
            data = B64.DecodeStoB(encryptedData)
            data = c.Decrypt(data, kg.Key, True)
            Return Bconv.StringFromBytes(data, "ASCII")   
'            Return Bconv.StringFromBytes(data, "UTF8")   
        Catch
            Return ""   
        End Try
    Else
        Return ""
    End If
End Sub

Y el código que guarda el contenido podria quedar así:

B4X:
Sub GuardarConfiguracion
    Dim TW As TextWriter
    TW.Initialize(File.OpenOutput(File.DirInternal, "config.ini", False))
    If Main.elpassword="" Then
        TW.WriteLine("")
    Else
        TW.WriteLine(Encrypt(Main.elpassword,"aZV22xxOHH"))
    End If
    TW.Close
End Sub


Espero que te sirva!!

Saludos
 
Top