2013-10-22 44 views
0

我正在使用SFTP APIjsacpe)進行文件傳輸。需要了解文件傳輸模式

這些文件基本上是擴展名爲.log, .dat,.txt.jrn的文本內容。在傳輸文件之前,我正在做AES encryption

文件傳輸模式爲'自動'。

示例代碼:

SshParameters sshParameters = new SshParameters("127.0.0.1",22,"User Name","Password"); 
    SshHostKeys sshHostKeys = new SshHostKeys(); 
    InetAddress address = InetAddress.getByName("127.0.0.1); 
    sshHostKeys.addKey(address, "finger print"); 
    HostKeyVerifier keyVerifier = new HostKeyFingerprintVerifier(sshHostKeys); 
    sshParameters.setHostKeyVerifier(keyVerifier); 

    sftp = new Sftp(sshParameters); 
    sftp.setTimeout(30 * 1000); 
    sftp.setDownloadBlockSize(300); 
    sftp.setUploadBlockSize(300); 
    sftp.setSendBufferSize(300); 
    sftp.setReceiveBufferSize(300); 
    sftp.addSftpListener(this); 
    sftp.connect(); 

    **sftp.setAuto(true);** 

我想知道在哪個模式(ASCII或二進制)的SFTP將傳輸的文件。

如果我們將sftp api設置爲「自動」,sftp api將決定ftp模式,因爲每種文件的擴展類型都不相同。

May be this is an basic question but i want to understand. 

在此先感謝!

+0

作爲數據將始終被加密爲二進制.... –

+0

如果您正在加密文件,請使用BINARY。事實上,除非您使用FTP爲您處理的奇怪字符編碼,否則實際上不需要使用其他任何東西。但是,由於您使用SFTP,爲什麼要對文件進行加密? – 2013-10-22 02:38:19

回答

0

SFTP協議默認使用二進制模式,直到SFTP版本4甚至沒有ASCII模式。一些軟件(包括我們的SecureBlackbox庫)可以模擬ASCII模式,但這種模擬不是很可靠,因爲它不知道目標系統使用什麼EOL約定。

現在正如評論中所說,您最好堅持使用二進制模式,並且不要自動依賴任何東西。我可以想象,在某些小文件中,自動檢測可能會失敗,從而損壞您的數據。

+0

Eugene Mayevski'EldoS感謝您的回覆,我會嘗試使用默認的二進制設置 – User1234

+0

@ User1234正確的方式來感謝StackOverflow網絡,以滿足您的答案。如果您的問題在整體上回答了某個特定答案,您需要將該答案標記爲已接受,以讓其他人知道問題已得到解答。複選標記位於投票按鈕下方。 –