如何不对我的密码进行硬编码(Android)?

时间:2012-02-22 09:13:49

标签: android email passwords gmail hardcode

在我的App中我通过电子邮件发送bug报告。我听说在这里硬编码我的密码是不安全的,所以我该如何保护它呢?

是否可以写入我的/ res / values然后从那里读取它?

原因是我不会使用内部电子邮件应用程序。然后用户退出我的应用程序,这不是很好,因为他可能不会回来

GMailSender sender = new GMailSender("my_emailadress@gmail.com", "my_password");
sender.sendMail("Bugreport", 
                currentQuestion.getID(),   
                "my_emailadress@gmail.com",   
                "my_emailadress@gmail.com"); 

请帮帮我。 感谢

2 个答案:

答案 0 :(得分:3)

如果您将密码放在应用程序中,则没有真正安全的方法可以保护您的密码。最不重要的事情是制作一个分离帐户,因此它与您的真实帐户没有相关联。

除此之外,我建议不要使用这种方法。使用邮件应用程序中的构建并不是那么糟糕。这样用户就会知道,他正在为改善你的应用做出贡献,这是一件好事。

第三种可能性是制作一个网页,用于在发生错误时提交错误并在您的应用中发送HTTP请求。但是,让用户知道它,因为如果没有,他可能会认为你在监视他。

然后,内置了android的崩溃报告机制,所以你根本不需要做任何事情。

答案 1 :(得分: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);
    } 
}