FTP Upload Encrypted and Compressed
Compress and encrypt a file, and upload it to an FTP server. Then do the reverse (download, decrypt, inflate).
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<%
set ftp = Server.CreateObject("Chilkat_9_5_0.Ftp2")
' Any string unlocks the component for the 1st 30-days.
success = ftp.UnlockComponent("Anything for 30-day trial")
If (success <> 1) Then
Response.Write ftp.LastErrorText & "<br>"
End If
set crypt = Server.CreateObject("Chilkat_9_5_0.Crypt2")
' Any string unlocks the component for the 1st 30-days.
success = crypt.UnlockComponent("Anything for 30-day trial")
If (success <> 1) Then
Response.Write crypt.LastErrorText & "<br>"
End If
ftp.Hostname = "www.example-code.com"
ftp.Username = "***"
ftp.Password = "***"
' Connect and login to the FTP server.
success = ftp.Connect()
If (success <> 1) Then
Response.Write ftp.LastErrorText & "<br>"
End If
' Change to the remote directory where the file will be uploaded.
success = ftp.ChangeRemoteDir("junk")
If (success <> 1) Then
Response.Write ftp.LastErrorText & "<br>"
End If
' Read the file into memory.
set fileData = Server.CreateObject("ByteData")
Set fileData = crypt.ReadFile("hamlet.xml")
If (fileData Is Nothing ) Then
Response.Write crypt.LastErrorText & "<br>"
End If
set compressedData = Server.CreateObject("ByteData")
Set compressedData = crypt.CompressBytes(fileData)
' Use 128-bit AES encryption, in CBC mode.
crypt.CryptAlgorithm = "aes"
crypt.CipherMode = "cbc"
crypt.KeyLength = 128
crypt.SetEncodedKey "0123456789ABCDEF","ascii"
crypt.SetEncodedIV "0123456789ABCDEF","ascii"
set encryptedData = Server.CreateObject("ByteData")
Set encryptedData = crypt.EncryptBytes(compressedData)
' Upload from a byte array.
remoteFilename = "hamlet.dat"
success = ftp.PutFileFromBinaryData(remoteFilename,encryptedData)
If (success <> 1) Then
Response.Write ftp.LastErrorText & "<br>"
End If
' Now do the reverse:
set encryptedData2 = Server.CreateObject("ByteData")
Set encryptedData2 = ftp.GetRemoteFileBinaryData(remoteFilename)
If (encryptedData2 Is Nothing ) Then
Response.Write ftp.LastErrorText & "<br>"
End If
' Decrypt:
set decryptedData = Server.CreateObject("ByteData")
Set decryptedData = crypt.DecryptBytes(encryptedData2)
' Inflate:
set inflatedData = Server.CreateObject("ByteData")
Set inflatedData = crypt.InflateBytes(decryptedData)
' Save the decrypted/inflated data to a file.
success = crypt.WriteFile("hamlet2.xml",inflatedData)
If (success <> 1) Then
Response.Write crypt.LastErrorText & "<br>"
End If
ftp.Disconnect
Response.Write "File Uploaded and Downloaded!" & "<br>"
%>
</body>
</html>
|