[英]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.