2012-02-22 105 views
2

在我的應用程序我通過電子郵件發送bugreports。我聽說在這裏硬編碼我的密碼不安全,所以我如何保護它?如何不對我的密碼進行硬編碼(Android)?

寫入我的/ res/values然後從那裏讀取它足夠了嗎?

原因是我不會使用內部電子郵件應用程序。那麼用戶退出我的應用程序,這不是很好,因爲他可能不會回來

GMailSender sender = new GMailSender("[email protected]", "my_password"); 
sender.sendMail("Bugreport", 
       currentQuestion.getID(), 
       "[email protected]", 
       "[email protected]"); 

請幫助我。 感謝

+0

而不是硬編碼你可以建立一個用戶界面組件,它會在發送信息時要求輸入電子郵件和密碼,這樣你或用戶可以在那裏輸入用戶名和密碼,然後發送它。 – Triode 2012-02-22 09:18:52

回答

0

您可以使用SHA加密方法來加密密碼:

下面是使用SHA加密代碼:

import java.io.UnsupportedEncodingException; 
import java.security.MessageDigest; 
import java.security.NoSuchAlgorithmException; 

public class AeSimpleSHA1 { 

    private static String convertToHex(byte[] data) { 
     StringBuffer buf = new StringBuffer(); 
     for (int i = 0; i < data.length; i++) { 
      int halfbyte = (data[i] >>> 4) & 0x0F; 
      int two_halfs = 0; 
      do { 
       if ((0 <= halfbyte) && (halfbyte <= 9)) 
        buf.append((char) ('0' + halfbyte)); 
       else 
        buf.append((char) ('a' + (halfbyte - 10))); 
       halfbyte = data[i] & 0x0F; 
      } while(two_halfs++ < 1); 
     } 
     return buf.toString(); 
    } 

    public static String SHA1(String text) 
      throws NoSuchAlgorithmException, UnsupportedEncodingException { 
     MessageDigest md; 
     md = MessageDigest.getInstance("SHA-1"); 
     byte[] sha1hash = new byte[40]; 
     md.update(text.getBytes("iso-8859-1"), 0, text.length()); 
     sha1hash = md.digest(); 
     return convertToHex(sha1hash); 
    } 
} 
+0

他不能使用密碼學,因爲他想在應用程序中存儲他的密碼,而不必在運行時輸入密碼。 – caiuspb 2012-02-22 09:31:34

+0

好 - 也許有一種方法,但我不知道如何去做。如果要在運行時對其進行加密,則必須將PW存儲在您的應用程序中 – caiuspb 2012-02-22 09:33:45

+4

只需說清楚:SHA是散列函數系列,而不是加密算法。對散列進行硬編碼和對psw本身進行硬編碼一樣糟糕。您不受反編譯器的保護。 – 2012-09-27 11:16:50

3

還有就是要保護你的密碼沒有真正安全的方式,如果你把它在你的應用程序中。至少要做的是做一個分離賬戶,所以它不會與你的真實賬戶相關聯。

除此之外,我建議不要使用這種方法。在郵件應用程序中使用構建並不是那麼糟糕。這樣用戶就會知道,他正在爲提高您的應用做出貢獻,這是一件好事。

第三種可能性是創建一個網頁來提交錯誤並在發生錯誤時在您的應用中發送HTTP請求。但是,讓用戶知道它,因爲如果沒有,他可能會認爲你在監視他。

然後,有內置的android的崩潰報告機制,所以你不必做任何事情。

+0

嗨,謝謝。我不會在後臺發送一個警告對話框,並且用戶必須確認錯誤報告已發送給我。所以沒有間諜。 是的,我可以做的第二封電子郵件這將是一個非常簡單的解決方案。 但是當我的應用程序變得更受歡迎時,我可能會更改它並通過HTTP請求發送它。 – androiddevjedi 2012-02-22 09:42:43

相關問題