J'essaie d'obtenir ce code en PHP à Java mais j'obtiens des résultats différents, où est l'erreur?mot de passe + sel php to java
Code PHP
public function hashSSHA($password) {
$salt = sha1(rand());
$salt = substr($salt, 0, 10);
$salt = "172ba59e6b";
$encrypted = base64_encode(sha1($password . $salt, true) . $salt);
$hash = array("salt" => $salt, "encrypted" => $encrypted);
return $hash;
}
Java
private Map senha(String password){
Map<String, String> pass = new HashMap<String, String>();
String salt = sha1(Integer.toString((int) Math.random()));
salt = salt.substring(0,10).toLowerCase();
salt = "172ba59e6b";
String tobase64 = toSHA1((password + salt).getBytes()) + salt;
byte[] encodedBytes = Base64.encodeBase64(tobase64.getBytes());
String encrypted = new String(encodedBytes);
String[] array;
pass.put("salt",salt);
pass.put("encrypted",encrypted);
Log.d("asd",encrypted);
return pass;
}
fonction Java SHA1
public String sha1(String s) {
try {
// Create MD5 Hash
MessageDigest digest = java.security.MessageDigest.getInstance("SHA-1");
digest.update(s.getBytes());
byte messageDigest[] = digest.digest();
// Create Hex String
StringBuffer hexString = new StringBuffer();
for (int i = 0; i < messageDigest.length; i++)
hexString.append(String.format("%02X", 0xFF & messageDigest[i]));
return hexString.toString();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return "";
}
Java sha1bin
public static String toSHA1(byte[] convertme) {
MessageDigest md = null;
try {
md = MessageDigest.getInstance("SHA-1");
}
catch(NoSuchAlgorithmException e) {
e.printStackTrace();
}
return new String(md.digest(convertme));
}
Où est-ce que je me trompe? Y a-t-il un moyen simple de faire?
Sur java avec du sel = 172ba59e6b:
String tobase64 = toSHA1(("muranga21" + salt).getBytes()) + salt;
Retour: {bvrt172ba59e6b
En PHP avec le sel = 172ba59e6b :
$sha1 = sha1("muranga21" . $salt, true) . $salt;
Retour: {bvrt172ba59e6b
Mais quand je essayez-encode base64:
En php je suis:
o/exe6eNHGKbdvy6jd1ym6uddKExNzJiYTU5ZTZi
Sur java:
77 + 977 + 9 E ++/ve +/vRxi77 + 9DU +/ve +/vXLvv73vv73vv71077 + 9MTcyYmE1OWU2Yg = =
** Vulnérabilité de sécurité: ** * Jamais * utilise un type 'String' pour contenir les mots de passe (par exemple vos méthodes' senha' et 'sha1'). Utilisez à la place des tableaux 'byte' (c'est-à-dire' byte [] ') et assurez-vous d'écraser leur contenu * avant * de jeter la référence. – ray
Ne créez pas votre propre fonction de hachage de mot de passe. Utilisez l'API de hachage des mots de passe de PHP! http://php.net/password –