Spanish Proteger archivos???

vampirbcn

Active Member
Licensed User
Longtime User
Alguien puede ayudarme, llevo varios días liado intentando proteger (encriptar) un archivo jpg para posteriormente desprotegerlo, pero no hay forma y me estoy volviendo loco, parece que la protección es correcta pero no hay forma de desprotegerlo.

Os dejo el codigo por si alguien puede ayudarme.

Protección: protege el jpg y lo copia de la carpeta original a la carpeta dirinternal/imagefolder (creo que es correcto):

Sub EncryptFunction (pathorigen As String, archivo As String)
Dim elpassword As String
elpassword = 123456

Dim InputStream1 As InputStream
InputStream1 = File.OpenInput(pathorigen, archivo)

Dim OutputStream1 As OutputStream
OutputStream1.InitializeToBytesArray(1000)

File.Copy2(InputStream1, OutputStream1)

Dim Buffer() As Byte
Buffer = OutputStream1.ToBytesArray

Dim output As RandomAccessFile
output.Initialize(File.DirInternal & "/imagefolder", archivo, False)
output.WriteEncryptedObject(Buffer, elpassword, output.CurrentPosition)

InputStream1.Close
OutputStream1.Close
output.Close
ToastMessageShow("Protegido!", False)
End Sub

Desprotección: Desprotege el jpg y crea un nuevo archivo llamado recuperado.jpg (CREO QUE ESTO ESTA MAL, ya que me genera el archivo pero no logro verlo)

Sub DecryptFile (archivo As String)
Dim elpassword As String
elpassword = 123456

Dim input As RandomAccessFile
Dim output As RandomAccessFile
input.Initialize(File.DirInternal & "/imagefolder", archivo, True)
output.Initialize(File.DirInternal & "/imagefolder", "recuperado.jpg", False)
output.WriteObject(input.ReadEncryptedObject(elpassword, input.CurrentPosition), False, 0)
output.Close
ToastMessageShow("Desprotegido!", False)
End Sub

Gracias de antemano
 
Last edited:

jota

Active Member
Licensed User
Longtime User
Te he montado un ejemplo comentado, a ver si te sirve.

Sub Globals
Dim elpassword As String = "123456"
End Sub

Sub Activity_Create(FirstTime As Boolean)
EncryptFunction(File.DirAssets,"9.png")
DecryptFile("9.png")
Activity.SetBackgroundImage(LoadBitmap(File.DirInternal & "/imagefolder", "recuperado.jpg"))
End Sub

Sub EncryptFunction(directorio As String,fichero As String)
Dim res As String 'texto en el que almacenamos el fichero en base64
Dim l As List 'objeto a encriptar

res = ""
l.Initialize

Dim su As StringUtils
Dim InputStream1 As InputStream
Dim OutputStream1 As OutputStream
Dim Buffer() As Byte

'Codificamos el fichero en base64
InputStream1 = File.OpenInput(directorio,fichero)
OutputStream1.InitializeToBytesArray(1000)
File.Copy2(InputStream1, OutputStream1)
Buffer = OutputStream1.ToBytesArray
res = su.EncodeBase64(Buffer)
OutputStream1.Close
InputStream1.Close

'Cargamos la cadena de base64 en el objeto a encriptar
l.Add(res)

'Creamos el directorio si no existe
If File.IsDirectory(File.DirInternal,"imagefolder") = False Then File.MakeDir(File.DirInternal,"imagefolder")

'Encriptamos y creamos el nuevo fichero
Dim output As RandomAccessFile
output.Initialize(File.DirInternal & "/imagefolder", fichero, False)
output.WriteEncryptedObject(l,elpassword , output.CurrentPosition)
output.Close
End Sub

Sub DecryptFile(fichero As String)
Dim res As String
Dim l As List
Dim input As RandomAccessFile

'Carga datos del fichero encriptado
input.Initialize(File.DirInternal & "/imagefolder", fichero, True)
l = input.ReadEncryptedObject(elpassword , input.CurrentPosition)
res = l.Get(0) 'Pasamos el contenido del objeto a un string
input.Close

'Convierte base64 en un fichero
Dim b() As Byte
Dim us As StringUtils
b= us.DecodeBase64(res)

Dim output As RandomAccessFile
output.Initialize(File.DirInternal & "/imagefolder", "recuperado.jpg", False)
output.WriteBytes(b,0,b.Length,0)
output.close

End Sub
 
Top