Olá, eu estou criando um projeto android que lida com webservice, autenticação de login e etc. Agora eu só preciso lidar com a segurança, gostaria de saber qual o melhor método pra criptografar senhas no android studio porque eu não sei nada sobre criptografia ainda e todas as minhas pesquisas na internet são confusas. Se possível, gostaria também de um exemplo de como implementar
{code type=java}
public class Criptografia {
public static String codificar(String mensagem, String chave) throws Exception {
byte[] bytemensagem = nullPadString(mensagem).getBytes();
byte[] bytechave = chave.getBytes();
Key secretKey = new SecretKeySpec(bytechave, "AES");
Cipher c = Cipher.getInstance("AES");
c.init(Cipher.ENCRYPT_MODE, secretKey);
byte[] cipher = c.doFinal(bytemensagem);
String codigo = fromHex(cipher);
return codigo;
}
public static String decodificar(String decmensagem, String chave) throws Exception {
byte[] bytechave = chave.getBytes();
Key secretKey = new SecretKeySpec(bytechave,"AES");
Cipher c = Cipher.getInstance("AES");
c.init(Cipher.DECRYPT_MODE, secretKey);
byte[] byteDecodificado = c.doFinal(toHex(decmensagem));
String mensagem = new String(byteDecodificado);
return mensagem;
}
private static String nullPadString(String original) {
StringBuffer output = new StringBuffer(original);
int remain = output.length() % 16;
if (remain != 0) {
remain = 16 - remain;
for (int i = 0; i < remain; i++) {
output.append((char) 0);
}
}
return output.toString();
}
public static String fromHex(byte[] hex) {
StringBuffer sb = new StringBuffer();
for (int i=0; i < hex.length; i++) {
sb.append( Integer.toString( ( hex[i] & 0xff ) + 0x100, 16).substring( 1 ) );
}
return sb.toString();
}
public static byte[] toHex(String s) {
int len = s.length();
byte[] data = new byte[len / 2];
for (int i = 0; i < len; i += 2) {
data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
+ Character.digit(s.charAt(i+1), 16));
}
return data;
}
}
{/code}