Estou utilizando um webservice (php+mysql ) para autenticar o usuário no meu aplicativo, porém os dados do usuário ficam expostos no banco de dados.
Minha pergunta: Devo criptografar a senha do usuário no meu aplicativo ou no banco? Qual tipo de criptografia vocês recomendam utilizar (MD5, sha512, sha256, AES) ou outras?
$senhaDigitada = 'senha_Que_Veio_Da_Requisicao_HTTPS';
$hashDaSenha = password_hash($senhaDigitada, PASSWORD_BCRYPT);
// armazene $hashDaSenha no banco de dados
Há mais exemplos da documentação, e você pode procurar por php password_hash exemplo no Google para mais.Não esqueça de criar uma coluna com espaço suficiente no banco (ex: varchar(255)).
Vai simplificar sua vida, pois a geração de hash das senhas e comparação ocorrerá em um único lugar (webservice). Isso facilita, por exemplo, caso você queira adicionar um novo cliente além do aplicativo android (ex: uma página web ou um aplicativo para iOS). Com a autenticação em um único lugar, você não precisa reimplementar a geração do hash em ambientes diferentes, só a interface pro usuário digitar login e senha.
Além disso, é mais seguro seguro: se sua aplicação for comprometida (hackeada), o método de geração do hash da senha e autenticação não será divulgado, o que comprometeria todos os usuários e possivelmente acabaria com a sua aplicação.
Desconheço cenários onde isso seja feito no cliente (aplicativo). O mais comum, até onde sei, é fazer isso no servidor.