Java 如何在应用程序中存储密码

Java 如何在应用程序中存储密码,java,android,email,Java,Android,Email,我正在使用lib通过我自己的电子邮件帐户在我的应用程序中发送邮件。问题是,我需要把加密的电子邮件放在我的课堂上,我认为这太容易逆转,并有权访问我的电子邮件。那么,在我的应用程序中,保护我的密码安全的最佳方法是什么?我没有在服务器中存储任何内容的权限 我正在使用的库:请参阅@Kushan的答案,了解如何对其进行加密 您可以将其安全地存储在共享参考文件中,并且在需要时随时可以取回,但一个好方法是只将其存储在服务器上,因为另一个答案的评论表明,当手机处于根目录下时,共享参考文件不安全: SharedP

我正在使用lib通过我自己的电子邮件帐户在我的应用程序中发送邮件。问题是,我需要把加密的电子邮件放在我的课堂上,我认为这太容易逆转,并有权访问我的电子邮件。那么,在我的应用程序中,保护我的密码安全的最佳方法是什么?我没有在服务器中存储任何内容的权限


我正在使用的库:

请参阅@Kushan的答案,了解如何对其进行加密

您可以将其安全地存储在
共享参考文件中,并且在需要时随时可以取回,但一个好方法是只将其存储在服务器上,因为另一个答案的评论表明,当手机处于根目录下时,共享参考文件不安全

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); 

SharedPreferences.Editor editor = sharedPref.edit();
editor.putString("password", ""); //put when you got your password here.....
editor.commit();
在以下人员需要时将其取回:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
String password = sharedPref.getString("password", "noPass");

如果需要加密,可以查看MessageDigest。它们提供强大的哈希功能来加密密码

将您的密码或电子邮件散列后存储在持久的共享参考文件中,正如其他答案所指出的那样


安全性能用于存储密码和敏感信息 以下是如何存储数据:

<map>
<int name="timeout" value="500" />
<boolean name="is_logged_in" value="true" />
</map>
存储用户密码:

SharedPreferences prefs = new SecurePreferences(context, "userpassword", "my_user_prefs.xml");

更多

尝试使用SharedReference您还可以将这些存储在android设备上的SQLLite db中。这将比SharedReference更有效率。另外,如果你制作一个FTS3或FTS4表格,你可以非常快速地搜索电子邮件:)希望这个帮助共享首选项不安全,如果手机是根目录,它们可以很容易地被提取。这正是我建议SQLLite的原因:)还有MessageDigest提供了一些非常好的哈希算法,例如。。沙256等。。使用/不使用解密技术很难破解它们正如我在@Tapan中评论的那样,我曾考虑使用Firebase保存加密密码,并在用户发送电子邮件时检索密码。这是一个很好的解决方案?是的,你也可以这样做。无论如何,这可能是最好的方法。不过,请考虑网络延迟问题。如果需要很长时间才能获得通行证,或者如果您的互联网断开连接并且您的请求没有超时,那么这将需要很长时间,用户可能会变得不耐烦。嗯,问题是,我仍然必须将加密的通行证放在代码中,以便使用sp存储……我在想,也许我可以使用firebase来存储通行证,并且只有当用户发送电子邮件时才进行检索…?是的,我会说这是一个很好的方法,但是你是依赖于互联网的,所以如果你必须使用它来执行任何其他功能,你就不能这样做。但强烈建议不要在本地设备上存储密码,共享偏好也有风险,我会说@SpotikWell,发送电子邮件的用户依赖于互联网,所以我认为这没关系?是的,这对你最好,我会说@SpotikThk u for the help=)已经对你的答案投了赞成票,这对我来说是一件新鲜事。但是我在哪里可以了解更多关于SecurePreferences的信息呢@类风湿关节炎
SharedPreferences prefs = new SecurePreferences(context, null, "my_custom_prefs.xml");
SharedPreferences prefs = new SecurePreferences(context, "userpassword", "my_user_prefs.xml");