Hash en Java con o sin sal

Estoy tratando de hacer un método para codificar a SHA (128,256,512) con o sin sal. El método para no tener sal es

private static String crypt(String chain, String method) {
    MessageDigest md;
    try {
        md = MessageDigest.getInstance(method);
        md.update(chain.getBytes("UTF-8"));
        byte[] mb = md.digest();
        String out = "";
        for (int i = 0; i < mb.length; i++) {
            byte temp = mb[i];
            String s = Integer.toHexString(new Byte(temp));
            while (s.length() < 2) {
                s = "0" + s;
            }
            s = s.substring(s.length() - 2);
            out += s;
        }
        return out;

    } catch (Exception e) {
        System.out.println("ERROR: " + e.getMessage());
    }
    return null;
}

donde el método puede ser

private final static String MD5="MD5";
private final static String SHA_128="SHA-1";
private final static String SHA_256="SHA-256";
private final static String SHA_384="SHA-384";

pero también me gustaría tener una cripta de método (cadena de cadena, sal de cadena, método de cadena). Traté de cambiar la línea a:

byte[] mb=md.digest(salt.getBytes("UTF-8");

Pero no devuelve la cadena correcta (en comparación con la llamada php hash_hmac ('sha256', 'pass', 'salt') ). ¿Cómo puedo solucionarlo o dónde puedo encontrar un método con sal opcional para esos algoritmos? Gracias

Respuesta 1

Estoy tratando de crear un juego de Tanques pero todavía estoy aprendiendo cómo hacer programación gráfica en Java. Inicialmente intenté mover una de dos imágenes (cuál depende de qué jugador vaya) con ...

Tengo varias clases (FloatOperand, BooleanOperand, IntegerOperand) que son muy similares. Solo difieren en el método "parse" que se llama (parseFloat, parseBoolean, etc.). ¿Podría reemplazar esto ...

Soy relativamente nuevo en trabajar con Java y he venido de un fondo C / C ++. En mi aplicación, necesito una serie de clases que simplemente contendrán datos. En lugar de tener un archivo por clase de datos, yo ...

can anyone tell me how can I use notifyDataSetChanged(); function when I want to refresh my arrylist in a activity when myadapter extends baseAdapter !!! thanks a lot ...