Ben PHP Java web platformlar değiştirmek için bir ihtiyaç kendimi buluyorum ama benim kullanıcıların şifrelerini tüm tutmak istiyorum ...
Ben bu kodu şifre öncesinde web sitesine şifre olarak karma değerini yazma için karma yapmak vardı:
MessageDigest md = null;
md = MessageDigest.getInstance("SHA");
md.update(plaintext.getBytes("UTF-8"));
byte raw[] = md.digest();
hash = new Base64().encodeToString(raw).replaceAll("\n", "").replaceAll("\r", "");
Ben Java kodu şifre SHA-1 karma yaptığını düşünüyor ama sadece önce o byte UTF-8 kodlanmış ve daha sonra bu Base64 kodlanmış oldu buna.
Aynı, yani Java gibi aynı şifre için bir karma aynı değeri yok ben bir PHP kodu olmasını istiyorum, sadece ben SHA-1 karma yapıyor PHP kodu aynı SHA dönmeyecek gibi görünüyor (-1, Base64 sanırım, kodlanmış değil?) değer bir Java Base64 ... o (PHP benim şifreleri ilk UTF-8 bayt olmadığı gerçeği ile ilgili bir şey olabilir hash değerini deşifre kıyasla ve ben) PHP nasıl yapabilirim lütfen?
p.s.
Başka garip bir şey ... Java benim şifreleri tüm 28characters (Genelde böyle bir şey rnwn4zTNgH30l4pP8V05lRVGmF4=
) uzun ... ama bu şifre sağlamalarının Base64().decode(hash)
değeri 10 karakter uzunluğunda (bir vardır Örnek [B@14e1f2b
).
Ben Base64 her 3 charter ek 1 karakter sanıyordum (, dolgu = tüzük hariç, 28 veya 27 daha fazla olduğunu, bir o 10 karakterlerinin daha büyük üçüncü) bu yüzden yanlış bir şekilde belki çözme çağrısı yapıyorum??
Ve SHA-1 şifre PHP değerleri karma tüm üstüne şöyle (UTF-8 mysql veritabanı) 40 karakterden uzun olan dd94709528bb1c83d08f3088d4043f4742891f4f
?