私はこのコードをPHPでJavaに取得しようとしていますが、別の結果が出ていますが、エラーはどこですか?パスワード+塩php to java
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;
}
の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));
}
どこが間違っていますか?簡単なやり方はありますか?
String tobase64 = toSHA1(("muranga21" + salt).getBytes()) + salt;
リターン:{
bvrt172ba59e6b PHPに対する塩= 172ba59e6bとの塩= 172ba59e6bとJavaを
:
$sha1 = sha1("muranga21" . $salt, true) . $salt;
戻る:{bvrt172ba59e6b
しかし、私base64でエンコードを行う試してください。
PHPで私が得た:Javaを
O/exe6eNHGKbdvy6jd1ym6uddKExNzJiYTU5ZTZi
:
77 + 977 + 9E ++/VEの+/vRxi77 + 9du +/VEの+/vXLvv73vv73vv71077 + 9MTcyYmE1OWU2Yg = =
セキュリティ上の脆弱性**パスワードを保持するために 'String'型を使用しないでください(例:' senha'と 'sha1'メソッド)。 'byte'配列(つまり' byte [] ')を代わりに使用し、その内容を上書きしてから参照を破棄するようにしてください。 – ray
独自のパスワードハッシュ関数を作成しないでください。 PHPのパスワードハッシングAPIを使用してください! http://php.net/password –