簡體   English   中英

密碼太短會導致FTP上傳問題

[英]Hashed password causes FTP Upload problems

我有一個Android應用程序,可將數據上傳到FTP(S)服務器。 一切正常,直到我哈希密碼。 奇怪的是,登錄/上傳和斷開與服務器的連接似乎可行,但是我的FTP沒有顯示新數據。

這是我填寫密碼的代碼:

MessageDigest sha;
    try {
        sha = MessageDigest.getInstance("SHA-1");
        byte[] hashOne = sha.digest(etPassword.getText().toString().getBytes());
        server.setPassword(hexEncode(hashOne));
    } catch (NoSuchAlgorithmException e) {
        //
    }

static private String hexEncode(byte[] aInput) {
    StringBuffer result = new StringBuffer();
    char[] digits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
    for (byte b : aInput) {
        result.append(digits[(b & 0xf0) >> 4]);
        result.append(digits[b & 0x0f]);
    }
    return result.toString();
}

在我的上傳服務中:

private void ftpUpload(File localSrc) {
    try {
        FTPSClient ftps = new FTPSClient();
        ftps.connect(server.getIp());
        ftps.login(server.getUser(), server.getPassword());
        ftps.changeWorkingDirectory(server.getRemoteDir());
        ftps.setFileType(FTPClient.BINARY_FILE_TYPE);

        try {
            upload(localSrc, ftps); // does the upload magic
        } catch (Exception e) {
            // 
        } finally {
            ftps.disconnect();
        }
    } catch (Exception e) {
        //
    }
}

為了進行測試,我嘗試改用FTPClient ,但是遇到了同樣的問題。

順便說一句,我將Apache commons-net用於FTP。

我也不例外,一切似乎都正常。 ftps.isConnected()也表示我已連接)。 但是沒有新的數據被放到FTP服務器。 有誰知道可能是什么問題?

編輯:我不確定我在最初的帖子中是否明確。 我希望用戶在應用程序中放入FTP(S)服務器的IP /用戶名/密碼,稍后再將一些數據上傳到該服務器。 由於我不想將用戶密碼以明文形式保存在數據庫中,因此我想先對其進行哈希處理。 但是由於我在將密碼保存到數據庫之前對其進行了哈希處理,因此由於密碼錯誤,我無法登錄到FTP(S)服務器。

因此,我的問題是:如何獲得哈希密碼,並且仍然能夠使用該密碼登錄FTP(S)服務器?

好吧,您在服務器端而非客戶端對哈希密碼進行哈希處理。 您將密碼發送到FTP服務器服務器,對其進行哈希處理並與用戶數據庫中的哈希進行比較。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM