Java 加密发送到MySQL数据库的Android应用程序数据

Java 加密发送到MySQL数据库的Android应用程序数据,java,android,security,amazon,Java,Android,Security,Amazon,我已经向亚马逊提交了一个应用程序以供批准,他们返回了以下内容: “此应用似乎正在发送未加密的敏感信息。在此情况下,电子邮件和密码以明文形式发送。请更新应用以加密所有敏感信息。” 在服务器端,我使用sha1()PHP方法(相当标准)加密数据库中的密码。我假设他们希望Java传递的密码/电子邮件字符串在传输到web服务时被加密。我想是吧?如果是这种情况,我需要解密数据(特别是电子邮件),因为它需要以纯文本形式存储在我的数据库中 以前有人看过这个Amazon查询吗?我对它的解释正确吗?如果是的话,Ja

我已经向亚马逊提交了一个应用程序以供批准,他们返回了以下内容:

“此应用似乎正在发送未加密的敏感信息。在此情况下,电子邮件和密码以明文形式发送。请更新应用以加密所有敏感信息。”

在服务器端,我使用sha1()PHP方法(相当标准)加密数据库中的密码。我假设他们希望Java传递的密码/电子邮件字符串在传输到web服务时被加密。我想是吧?如果是这种情况,我需要解密数据(特别是电子邮件),因为它需要以纯文本形式存储在我的数据库中

以前有人看过这个Amazon查询吗?我对它的解释正确吗?如果是的话,Java中有没有一种在传输过程中临时加密数据的方法

以下是我如何做到这一点的示例:

insertParam = new ArrayList<NameValuePair>();
            insertParam.add(new BasicNameValuePair("Email", Email));
            insertParam.add(new BasicNameValuePair("Password", Password));
            insertParam.add(new BasicNameValuePair("Username", Username));

            try {
                HttpClient httpClient = new DefaultHttpClient();
                HttpPost httpPost = new HttpPost(url_select);

                httpPost.setEntity(new UrlEncodedFormEntity(insertParam));
                HttpResponse httpResponse = httpClient.execute(httpPost);
                HttpEntity httpEntity = httpResponse.getEntity();

                is = httpEntity.getContent();

            }
insertParam=newarraylist();
insertParam.add(新的BasicNameValuePair(“电子邮件”,Email));
insertParam.add(新的BasicNameValuePair(“密码”,Password));
insertParam.add(新的BasicNameValuePair(“用户名”,Username));
试一试{
HttpClient HttpClient=新的DefaultHttpClient();
HttpPost HttpPost=新的HttpPost(url\u选择);
setEntity(新的UrlEncodedFormEntity(insertParam));
HttpResponse HttpResponse=httpClient.execute(httpPost);
HttpEntity HttpEntity=httpResponse.getEntity();
is=httpEntity.getContent();
}
编辑:


看起来HTTPS是一种选择。

亚马逊的要求似乎有些保守,但最好通过HTTPS而不是未加密的HTTP连接到您的web服务。这正是另一个StackOverflow用户最终所做的:

虽然您可以加密应用程序中的数据,通过internet发送数据,并使用共享密钥在服务器上解密数据,但这很容易受到攻击者的攻击,这些攻击者会对应用程序进行反编译以获取密钥

或者,您可以生成一个密钥对,在应用程序中包含公钥并用它加密数据,通过internet发送,然后在服务器上使用私钥解密传入的数据,但您基本上只是手动重新实现HTTPS


在一天结束时,“正确的”实现Amazon要求的方法是使用HTTPS。其他任何东西都可能难以安全实现。

如果您所做的只是用SHA1对密码进行哈希运算,为什么不在androids端对密码进行哈希运算,然后将其发送到PHP?SHA1只是一个哈希算法。至于电子邮件,请参阅Ashley Ross。好的,听起来应该这样做。