2012-02-22 94 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

相关问题