54 votes

Comment générer un code de hachage unique pour la saisie de chaîne dans Android...?

Je voulais générer un code de hachage unique pour une chaîne dans Android. Y a-t-il une bibliothèque prédéfinie ou nous devons générer manuellement. S'il vous plaît n'importe quel corps si sait s'il vous plaît présenter un lien ou un code.

38voto

Bryan Kemp Points 663

Ceci est une classe que j'utilise pour créer des hachages Message Digest

 import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class Sha1Hex {

    public String makeSHA1Hash(String input)
            throws NoSuchAlgorithmException, UnsupportedEncodingException
        {
            MessageDigest md = MessageDigest.getInstance("SHA1");
            md.reset();
            byte[] buffer = input.getBytes("UTF-8");
            md.update(buffer);
            byte[] digest = md.digest();

            String hexStr = "";
            for (int i = 0; i < digest.length; i++) {
                hexStr +=  Integer.toString( ( digest[i] & 0xff ) + 0x100, 16).substring( 1 );
            }
            return hexStr;
        }
}

9voto

Boris Pavlović Points 22207
String input = "some input string";
int hashCode = input.hashCode();
System.out.println("input hash code = " + hashCode);

4voto

shareef Points 1482

J'utilise ceci, je l'ai testé comme clé de ma carte mémoire EhCacheManager

C'est plus propre je suppose

    /**
     * Return Hash256 of String value
     *
     * @param text
     * @return 
     */
    public static String getHash256(String text) {
        try {
            return org.apache.commons.codec.digest.DigestUtils.sha256Hex(text);
        } catch (Exception ex) {
            Logger.getLogger(HashUtil.class.getName()).log(Level.SEVERE, null, ex);
            return "";
        }
    }

j'utilise maven mais c'est le pot commons-codec-1.9.jar

3voto

user2260963 Points 250

Vous pouvez utiliser ce code pour générer du code has pour une chaîne donnée.

 int hash = 7;
for (int i = 0; i < strlen; i++) {
    hash = hash*31 + charAt(i);
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X