Tôi đang di chuyển mã PHP của mình sang Google App Engine - Java.
Vì vậy, tôi cần tương đương với chức năng mã hóa của PHP trong Java,
vì tôi đã lưu trữ tất cả mật khẩu của người dùng đã đăng ký
bằng cách sử dụng mật mã trong DB của tôi.Tương đương với chức năng mã hóa của PHP trong Java
Sửa 1: Đây là mã php của tôi cho các mật khẩu mã hóa:
$ password = "test123";
$ pwd = crypt ($ mật khẩu, $ mật khẩu);
echo $ pwd;
Output là (Trên của Windows cũng như dựa trên máy chủ Linux trên HostMonser):
temjCCsjBECmU
Có thể ai đó cho tôi mã java equivalted?
Tôi đã thử hoán vị khác nhau & kết hợp với
lớp MessageDigest, nhưng không thể làm cho nó đúng ..
Chỉnh sửa 2:
Đây là mẫu mã mà tôi nghĩ sẽ làm việc nhưng không:
try {
{
String password = "test123";
MessageDigest digest = MessageDigest.getInstance("MD5");
byte[] passwordBytes = password.getBytes();
digest.reset();
digest.update(passwordBytes);
digest.update(passwordBytes);
byte[] message = digest.digest();
StringBuffer hexString = new StringBuffer();
for (int i=0; i < message.length; i++)
{
hexString.append(Integer.toHexString(
0xFF & message[ i ]));
}
String encrypted = hexString.toString();
System.out.println(encrypted);
} } catch (NoSuchAlgorithmException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
Hãy cho tôi biết bạn không sử dụng thuật toán mã hóa mặc định (DES) .... có một lý do unixen hiện đại không đi kèm với tiện ích crypt - nó đã bị hỏng trước đó. –
@Billy Oneal: Mặc định của PHP phụ thuộc vào hệ điều hành. Trên Linux/BSD, nó mặc định để muối MD5 (ngoại trừ trên các phiên bản thực sự cũ). Các phiên bản mới hơn thậm chí có thể sử dụng một lược đồ mới hơn, như là SHA512 có muối. – Powerlord
@Billy ONeal: Tuy nhiên, mã mà dta * just * posted thực sự là DES ... phải nằm trên máy Windows có PHP 5.2 trở xuống. – Powerlord