Here is some code that I have that works perfectly:
Sub EncryptFile(ByVal sInputFilename As String, _
ByVal sOutputFilename As String, _
ByVal sKey As String)
Dim fsInput As New FileStream(sInputFilename, _
FileMode.Open, FileAccess.Read)
Dim fsEncrypted As New FileStream(sOutputFilename, _
FileMode.Create, FileAccess.Write)
Dim DES As New DESCryptoServiceProvider()
'Set secret key for DES algorithm.
'A 64-bit key and an IV are required for this provider.
DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey)
'Set the initialization vector.
DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey)
'Create the DES encryptor from this instance.
Dim desencrypt As ICryptoTransform = DES.CreateEncryptor()
'Create the crypto stream that transforms the file stream by using DES encryption.
Dim cryptostream As New CryptoStream(fsEncrypted, _
desencrypt, _
CryptoStreamMode.Write)
'Read the file text to the byte array.
Dim bytearrayinput(fsInput.Length - 1) As Byte
fsInput.Read(bytearrayinput, 0, bytearrayinput.Length)
'Write out the DES encrypted file.
cryptostream.Write(bytearrayinput, 0, bytearrayinput.Length)
cryptostream.Close()
End Sub
Is it possible to change the keysize and maybe even choose between MD5 and SHA1 encryption with this code? If not, can someone point me in the right direction to find some that does?
thanks
Simon
DES is an encryption algorithm. If you want to use something else you should look at the TripleDESCryptoServiceProvider, or the AesCryptoServiceProvider (in the System.Security.Cryptography namespace).
MD5 and SHA1 are actually hashing algorithms. Effectively they are special case one-way encryption algorithms that can not be decrypted (so I don’t think they are what you are looking for).
Just looking at the documentation for TripleDES and Aes classes it looks like you should be able to replace the line:
with any of the other CryptoServiceProvider classes that provides a CreateEncryptor function. They also support a KeySize property that you can set. You might try something like:
I haven’t tried to compile the above sample but that you get you started I hope.