-2

我试图通过电子邮件地址获取用户名和密码并将其作为电子邮件发送[密码恢复].....我可以通过电子邮件检查用户的存在,但现在我需要通过他/她之前提供的电子邮件......

这是我的 DB_Class

public boolean getEmail(String emailNo) throws SQLException //pass the EmailNo which you want in where clause 
{                              

Cursor mCursor = db.rawQuery("SELECT Username, Passwords FROM " + USERS_TABLE + " WHERE EmailNO='"+emailNo+"'",null); 
 if (mCursor != null) {          
 if(mCursor.getCount() > 0) 
 return true; 

}
return false; 

} 

还有我的用于检查用户存在和发送电子邮件的 Activity 类。下面是

 public void onClick(View v) {
            String EmailAddress = txtEmailAddress.getText().toString();

        try{
        if(EmailAddress.length() > 0)
        {
         DBAdapter  dbUser = new DBAdapter (RecoverPassword.this);
            dbUser.open();

        if(dbUser.getEmailAddress(EmailAddress))
            {
        Toast.makeText(RecoverPassword.this,"Email Successfully ", Toast.LENGTH_LONG).show();





 String to = txtEmailAddress.getText().toString();

         Intent email = new Intent(Intent.ACTION_SEND);
          email.putExtra(Intent.EXTRA_EMAIL, new String[]{ to});
         email.putExtra(Intent.EXTRA_SUBJECT, "Password Recovery");

         if(dbUser.getEmail(EmailAddress)){

          email.putExtra(Intent.EXTRA_TEXT,dbUser.getEmailAddr(obj.getusername(),obj.getpassword())) ;

     }else{

         Toast.makeText(RecoverPassword.this,"Email Not matching " ,Toast.LENGTH_LONG).show();
    }

      email.setType("message/rfc822");


  startActivity(Intent.createChooser(email, "gmail :"));                 

    }else{
        Toast.makeText(RecoverPassword.this,"Invalid Email", Toast.LENGTH_LONG).show();

        txtEmailAddress.setTex
4

1 回答 1

3

您应该永远无法从数据库中恢复密码。如果您真的想恢复原始密码,那么您的安全性非常低(希望您不要将密码存储为纯文本?)。

我强烈建议生成一个新的,将其存储在数据库中并将其发送给用户。

在他第一次使用新密码登录后,您应该强制他定义新密码。密码本身至少应该被加盐和散列。搜索 MD5 和 salt 以获取有关该主题的更多信息。那应该足够安全。

于 2012-05-30T14:05:06.477 回答