Hello Darren,
That’s VB.net but shouldn’t be a problem, I think.
Dim buffer() As Byte
Dim cipherParameters As ICipherParameters = New Parameters.ParametersWithIV(New
Parameters.KeyParameter(key), iv)
Dim cipher As BufferedBlockCipher = New Paddings.PaddedBufferedBlockCipher(New
Modes.CbcBlockCipher(New Engines.AesEngine), New Paddings.Pkcs7Padding)
cipher.Init(True, cipherParameters)
Using br As New BinaryReader(New FileStream(sourceFile, FileMode.Open,
FileAccess.Read))
Using bw As New BinaryWriter(New FileStream(targetFile,
FileMode.Create, FileAccess.Write))
Do While br.BaseStream.Position <
br.BaseStream.Length
buffer =
br.ReadBytes(AES_BLOCK_SIZE)
If buffer.Length <
AES_BLOCK_SIZE Then
bw.Write(cipher.DoFinal(buffer))
Else
buffer =
cipher.ProcessBytes(buffer)
bw.Write(buffer)
End If
Loop
End Using 'bw
End Using 'br
Von: DARREN ARSENAULT [mailto:[email protected]]
Gesendet: Donnerstag, 17. September 2015 16:33
An: [email protected]
Betreff: [dev-crypto-csharp] NEED HELP ENCRYPTING/DECRYPTING LARGE FILES
I have searched for documentation on my problem, but found no answers—only
others asking a similar question.
(FYI- I am a newbie to encryption, and am learning as I go.)
I have inherited a set of classes that performs encryption/decryption using
AesEngine and PaddedBufferedBlockCipher. The code works great, but is designed
to handle files that will fit into memory, processed in a single operation.
I need to update this code to work on very large (hundreds of MBs, maybe even
GBs) files, and am unsure what to do. My first thought is that I need to use
streams for the input and output, but I have found no documentation on how this
might be accomplished. In the API I see that there is a BufferedStreamCipher
class, but I am not sure if this is what I am looking for, or how to
instantiate it for my needs. Again, I find little information online.
Does this functionality exist? And, if so, can anyone point me towards
documentation or examples on it please?
Thank you very much for your time. Good-day, and be well.
Darren Arsenault