1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
import org.apache.commons.net.ftp.FTP import org.apache.commons.net.ftp.FTPClient import java.io.FileOutputStream import java.security.MessageDigest fun main() { val server = "ftp.rediris.es" val port = 21 val user = "anonymous" val password = "guest" val remoteFilePath = "/ruta/del/archivo.txt" val localFilePath = "ruta/local/archivo.txt" val ftpClient = FTPClient() try { ftpClient.connect(server, port) ftpClient.login(user, password) ftpClient.enterLocalPassiveMode() ftpClient.setFileType(FTP.BINARY_FILE_TYPE) val outputStream = FileOutputStream(localFilePath) val success = ftpClient.retrieveFile(remoteFilePath, outputStream) outputStream.close() if (success) { println("Archivo descargado exitosamente desde el servidor FTP.") // Calcular el hash SHA-512 del archivo descargado val sha512Hash = calculateSHA512Hash(localFilePath) println("SHA-512: $sha512Hash") } else { println("No se pudo descargar el archivo desde el servidor FTP.") } } catch (e: Exception) { e.printStackTrace() } finally { try { if (ftpClient.isConnected) { ftpClient.logout() ftpClient.disconnect() } } catch (e: Exception) { e.printStackTrace() } } } fun calculateSHA512Hash(filePath: String): String { val buffer = ByteArray(8192) val md = MessageDigest.getInstance("SHA-512") val inputStream = filePath.byteInputStream() var bytesRead: Int do { bytesRead = inputStream.read(buffer) if (bytesRead > 0) { md.update(buffer, 0, bytesRead) } } while (bytesRead != -1) inputStream.close() val result = md.digest() val sb = StringBuilder() for (b in result) { sb.append(String.format("%02x", b)) } return sb.toString() } |