Newsgroup: it.comp.lang.visual-basic
Titolo: Problema lettura stream binario

Salve a tutti,
Ho un problema nella lettura "a pezzi" di uno stream binario...
Allora, faccio cosě:
Dim instream As New FileStream(inputFile, FileMode.Open, _
 FileAccess.Read, FileShare.None, 4096)
Dim outstream As New FileStream(outputFile, FileMode.Create)
Dim buffer(4095) As Byte 'Buffer di lettura
Do
Dim readbyte As Integer = instream.Read(buffer, 0, buffer.Length)
If readbyte = 0 Then Exit Do 'Se il file č finito esce dal ciclo
Dim encodedbyte() As Byte = Encode(buffer)
outstream.Write(encodedbyte, 0, encodedbyte.Length)
Loop
outstream.Flush()
instream.Flush()
Bene, questa funzione funziona perfettamente...
Perň quando vado a decriptare:
Dim instream As New FileStream(inputFile, FileMode.Open, _
FileAccess.Read, FileShare.None, 4096)
Dim outstream As New FileStream(outputFile, FileMode.Create)
Dim buffer(4095) As Byte 'Buffer di lettura
Do
Dim readbyte As Integer = instream.Read(buffer, 0, 4096) 'Scrive nel buffer
If readbyte = 0 Then Exit Do 'Se il file č finito esce dal ciclo
Debug.Print(readbyte & " " & buffer.Length)
Debug.Print(inputFile & " " & outputFile)
Dim decodebyte() As Byte = Decode(buffer) 'Decodifica i dati
outstream.Write(decodebyte, 0, decodebyte.Length) 'Scrive nel file
Loop
outstream.Flush()
instream.Flush()
La funzione Decode lancia un eccezione (file compromesso, non riesce a 
decriptare la matrice di byte).
Sinceramente, non ho proprio idea di come mai succede questo... :(
Con la crittazione funziona, quando vado a decriptare no :(
Funzione Decode:
Public Function Decode(ByVal input() As Byte) As Byte()
Dim rjm As RijndaelManaged = New RijndaelManaged()
rjm.KeySize = 128
rjm.BlockSize = 128
rjm.Key = ASCIIEncoding.ASCII.GetBytes(m_key)
rjm.IV = ASCIIEncoding.ASCII.GetBytes(m_iv)
Try
Dim output() As Byte =  _
rjm.CreateDecryptor().TransformFinalBlock(input, 0, input.Length)
Return output
Catch e As Exception
ShowErrore(TypeOfErrore.Decriptazione)
End Try
End Function
Grazie in anticipo,
-- 
Carmine ( 
pikachu...@gmail.com
 (Togli la scritta NOSPAM) )
Webmaster di The Total Site 4 : 
http://www.thetotalsite.it
MariokartDS Codice Amico: 532639027909 - CarmineC in MarioKartDS
"Un problema non č un problema se puň essere risolto" 

Penso di aver capito più o meno il perche d questo fatto:
Quando si critta un file con rijndael le dimensioni aumentano :(
Ad es, per crittare un byte poi ne escono fuori 16.
Ma questo rapporto non è costante :((((((((((((((((
Va da 0 a 1,5 ......
Che fare???
Aiuto!
Bye,
-- 
Carmine ( 
pikachu...@gmail.com
 (Togli la scritta NOSPAM) )
Webmaster di The Total Site 4 : 
http://www.thetotalsite.it
MariokartDS Codice Amico: 532639027909 - CarmineC in MarioKartDS
"Un problema non è un problema se può essere risolto" 

 Ho un problema nella lettura "a pezzi" di uno stream binario...
Ciao, premesso che ancora non pratico Visual Studio 2005(sicchè non so 
risponderti), sei pregato di specificare la "versione" di VB che usi nel 
subject o almeno nel corpo del messaggio.
-- 
Emanuele Torrenti
Registered Linux User #409659
http://torrenti.altervista.org

 nel subject o almeno nel corpo del messaggio.
Ops scusa...
Cmq .net 2.0
Bye,
-- 
Carmine ( 
pikachu...@gmail.com
 (Togli la scritta NOSPAM) )
Webmaster di The Total Site 4 : 
http://www.thetotalsite.it
MariokartDS Codice Amico: 532639027909 - CarmineC in MarioKartDS


 Che fare???
non mi e` chiaro: hai rilevato un rapporto 1 a 16 oppure 1 a 1.5?
1 a 16 mi pare troppo alto:
$ ls -l
total 36660
-rw-r--r--  1 hal1961 users 37495932 Mar 31 19:53 PIA02891-95.mov
$ aes -e -f PIA02891-95.mov -o crittato
Enter password :
$ ls -l
total 73320
-rw-r--r--  1 hal1961 users 37495932 Mar 31 19:53 PIA02891-95.mov
-rw-r--r--  1 hal1961 users 37495948 Mar 31 19:54 crittato
quale libreria hai usato?
-- 
ciao, hal

 quale libreria hai usato?
Quella del .net 2.0 : System.Security.Cryptography...
Ecco come ho fatto il calcolo:
Dim ps As New IO.FileStream(Application.StartupPath & "\nocript.dat", _
 IO.FileMode.Create, IO.FileAccess.Write, IO.FileShare.None, 1, 
IO.FileOptions.None)
Dim p As New IO.FileStream(Application.StartupPath & "\cript.dat", _
IO.FileMode.Create, IO.FileAccess.Write, IO.FileShare.None, 1, 
IO.FileOptions.None)
Dim c(15) As Byte
For i As Short = 0 To 16
c(i) = 100
Next
ps.Write(c, 0, c.Length)
ps.Close()
'ps.Flush()
edford.Key = Core.GetKeyString
edford.Iv = Core.GetKeyString
Dim s() As Byte = edford.Encode(c)
p.Write(s, 0, s.Length)
p.Close()
'p.Flush()
MsgBox("ENCRYPTED: " & New IO.FileInfo(Application.StartupPath & 
"\well.dat").Length)
MsgBox("NOT CRYPTED: " & New IO.FileInfo(Application.StartupPath & 
"\wello.dat").Length)
'*** Si appoggia alla funzione Encode che ho descritto nel primo post.
:( :'(
Non so proprio che fare :( :( :(


Nessuno risponde?
Per favore... non so proprio più come fare :(
