Java 如何将应用程序数据安全地发送到收件人/服务器

Java 如何将应用程序数据安全地发送到收件人/服务器,java,android,security,encryption,Java,Android,Security,Encryption,我目前正在开发一个android应用程序,用户必须填写并成功地将几个文本字段的数据发送到收件人/服务器,才能启用一个功能 最大的问题是如何以一种安全的方式做到这一点,以防止(例如)反编译。我关心的不是运输过程中的安全,而是运输媒介的安全 到目前为止我的想法/阅读: 我可以使用Java邮件API通过邮件发送数据。 首先,我不希望要求用户必须输入其邮件凭据和SMTP服务器。 这意味着我必须在应用程序中包含邮件帐户的凭据。 为了避免有人对应用程序进行反编译并接管我的邮件帐户,我想到了加密方法,但即使我

我目前正在开发一个android应用程序,用户必须填写并成功地将几个文本字段的数据发送到收件人/服务器,才能启用一个功能

最大的问题是如何以一种安全的方式做到这一点,以防止(例如)反编译。我关心的不是运输过程中的安全,而是运输媒介的安全

到目前为止我的想法/阅读:

我可以使用Java邮件API通过邮件发送数据。 首先,我不希望要求用户必须输入其邮件凭据和SMTP服务器。 这意味着我必须在应用程序中包含邮件帐户的凭据。 为了避免有人对应用程序进行反编译并接管我的邮件帐户,我想到了加密方法,但即使我保存aes加密版本的密码,攻击者也可以对应用程序进行反编译,并添加一个syso来输出解密的密码。 这同样适用于OAuth身份验证,因为我必须存储身份验证令牌。 除了邮件版本之外,我还读了一些关于通过web服务的POST请求获取密码的内容,这似乎一点也不安全

我可以搜索免费的smtp服务器而不需要凭据,但我想要一些我可以依赖的东西,而不是每天醒来,看看服务是否仍然有效

将数据发送到web服务。 好的,这对我来说需要更多的工作,但我接受这一点,如果有一个解决方案,而不在应用程序中保存凭据,或者有一个web服务来接受来自每个人的数据

我忽略了什么吗?或者没有安全的方法不要求用户提供他的邮件凭证或谷歌帐户等

OAuth可能会起作用。OAuth的好处在于,如果令牌被破坏,它可以在服务器端被撤销

您可以创建一个在某些端口上接受TCP连接的web服务。您可以有一些身份验证机制,例如在接受数据之前执行的摘要身份验证


另一种选择是使用API,例如。高尔基需要开发人员密钥、应用程序密钥和应用程序实例id才能连接到服务器并发送数据。如果这些凭据以某种方式被泄露,您只需更改应用程序密钥并通过Play Store推送新版本的应用程序。

如果您在发送之前尚未准备好,请访问www.parse.com-连接到服务器握手,将公钥发送到客户端,将加密消息发送到服务器,用私钥解密。正如我在问题中所说的,我不担心传输过程中的安全性。在您的解决方案中,每个人都可能用虚假数据淹没我的web服务。