Faire de cryptage SHA1 sur Android?
Pouvez-vous me suggérer sur la façon de chiffrer la chaîne à l'aide d'algorithme SHA1 ?
J'ai cherché à ce sujet. Mais pas de chance.
Merci d'avance.
SHA1 n'est pas un algorithme de chiffrement, c'est un algorithme de hachage. Une fois que vous hachage votre message, il est impossible de "dehash". Si vous voulez savoir. Plus d'infos ici: en.wikipedia.org/wiki/Hash_algorithm.
À mon humble avis, il ne suffit pas de hachage de la chaîne une fois. Envisager le salage de la chaîne avec une valeur aléatoire et "récursivement" le hachage de l'salé de la chaîne d'au moins 1000 fois. Vous aurez alors besoin de stocker la valeur de départ aléatoire.
Un simple SHA-1 méthode: (mise à jour de l'intervenant suggestions, également à l'aide d'un massivement plus efficace octet->string algorithme de), Voir ce lien stackoverflow.com/questions/5980658/...
À mon humble avis, il ne suffit pas de hachage de la chaîne une fois. Envisager le salage de la chaîne avec une valeur aléatoire et "récursivement" le hachage de l'salé de la chaîne d'au moins 1000 fois. Vous aurez alors besoin de stocker la valeur de départ aléatoire.
Un simple SHA-1 méthode: (mise à jour de l'intervenant suggestions, également à l'aide d'un massivement plus efficace octet->string algorithme de), Voir ce lien stackoverflow.com/questions/5980658/...
OriginalL'auteur Ferdinand | 2011-04-22
Vous devez vous connecter pour publier un commentaire.
binnyb de
convertToHex
méthode ne fonctionne pas correctement. Une plus correct qui fonctionne pour moi est:utiliser le
SHA1
méthode pour obtenir votre sha1 chaîne.Mise à jour: fournir une réponse complète
OriginalL'auteur Mikael Engver
voici 2 méthodes que j'ai trouvé lors de la recherche d'un algorithme sha1 mise en œuvre:
utiliser le
SHA1
méthode pour obtenir votre sha1 de la chaîne. Je n'ai pas confirmé que c'est en effet un sha1, mais il travaille pour mes applications.Ton indentation est venu en regardant un peu incohérent, alors j'en ai fait plus de cohérence. Si vous n'aimez pas, il suffit de revenir. 🙂
Aussi garder à l'esprit que byte[] est un format plus compact, puis une chaîne hexadécimale et donc c'est probablement plus efficace de stocker comme un byte[] jusqu'à ce que vous avez besoin pour présenter les données à l'utilisateur, dans ce cas, l'utilisateur s'attend à ce hexadécimal.
Le problème, c'est ce convertToHex méthode est ignorant tous les autres convertis de caractère dans le résultat. Par exemple, le a de "have a nice day!" doit être 56cb5d30886e7715f9861220e940758abcbe5473 mais est 5c538671f812e478bb57.
Une méthode de travail pour les convertir à l'hex de byte[] tableau est publié sur forums.xkcd.com/viewtopic.php?f=11&t=16666&p=553936
OriginalL'auteur binnyb
J'ai répondu à cette question ( Comment SHA1 hash d'une chaîne de caractères dans Android? ), mais il s'adapte ainsi:
Android est livré avec Apache Commons Codec de sorte que vous pouvez simplement utiliser la ligne suivante pour créer un SHA-1 du maléfice de la Chaîne:
C'est la vieille méthode dépréciée vous obtenez avec Android 4 par défaut. Les nouvelles versions de DigestUtils apporter toutes les saveurs de shaHex() méthodes comme sha256Hex() et aussi surcharger les méthodes avec différents types d'arguments.
Bien sûr, il n'y a plus de fonctionnalités dans DigestUtils et le reste des Communes de Codec. Juste un coup d'oeil.
http://commons.apache.org/proper/commons-codec//javadocs/api-release/org/apache/commons/codec/digest/DigestUtils.html
EDIT:
Si vous obtenez une ClassNotFoundError vous devez l'ajouter explicitement communes-codec, comme la dépendance (même si il devrait venir avec Android transitive de la dépendance), dans Maven par exemple:
Et aussi, vous devrez modifier l'appel de:
(À mon humble pense que cela est probablement dû à un problème du chargeur de classe (classe de collision de nom) dans l'Android VM - qui permettrait de prouver que la chambre des communes-codec classes sont déjà présents...)
Voir aussi:
https://stackoverflow.com/a/9284092/621690
OriginalL'auteur Risadinha
binnyb m'ont mis sur la bonne voie, mais je l'ai trouvé un peu plus, plus facile à comprendre le code ici:
http://www.coderanch.com/t/526487/java/java/Java-Byte-Hex-String
OriginalL'auteur Ruben