2015-04-13 2 views
2

Ниже приведено использование функции JavaScript (forms.js) для хеширования пароля. Что является эквивалентом в JAVA,Хеширование пароля перед отправкой формы на сервер

function formhash(form, password) { 
     console.log("Hashing form"); 
     // Create a new element input, this will be our hashed password field. 
     var p = document.createElement("input"); 
     // Add the new element to our form. 
     form.appendChild(p); 
     p.name = "p"; 
     p.type = "hidden" 
     p.value = hex_sha512(password.value); 
     // Make sure the plaintext password doesn't get sent. 
     password.value = ""; 
     // Finally submit the form. 
     form.submit(); 
    } 
+1

Это не имеет никакого отношения к PHP. – Daan

+1

Вместо этого вы должны использовать ssl. – jeroen

+0

удален PHP-тег. –

ответ

5

Это код, который это делает. Скопировано из http://runnable.com/U8lo-rXJWGlhL-OG/sha512-for-java

import java.security.MessageDigest; 

public class SHA512 { 
     public static void main(String args[]) throws Exception { 
      String password = "[email protected]"; 

      if ((args.length == 1) && (args[0].length() > 0)) 
      { 
       password = args[0]; 
      } 
      System.out.println("Password: " + password + " in SHA512 is:"); 
      System.out.println(hashText(password)); 
     } 

    public static String convertByteToHex(byte data[]) 
    { 
     StringBuffer hexData = new StringBuffer(); 
     for (int byteIndex = 0; byteIndex < data.length; byteIndex++) 
      hexData.append(Integer.toString((data[byteIndex] & 0xff) + 0x100, 16).substring(1)); 

     return hexData.toString(); 
    } 

    public static String hashText(String textToHash) throws Exception 
    { 
     final MessageDigest sha512 = MessageDigest.getInstance("SHA-512"); 
     sha512.update(textToHash.getBytes()); 

     return convertByteToHex(sha512.digest()); 
    } 
} 

[EDIT]

При использовании другого набора символов, передать его getBytes. Пример textToHash.getBytes("UTF-8")

+0

Это может не работать со сложными паролями, потому что кодировка не задается при вызове 'textToHash.getBytes()'. Поэтому на разных платформах (Windows, Linux, ..) результат будет другим. – Robert

+0

Спасибо, что ответ на вопрос работает отлично. –

+0

@ Robert, пожалуйста, дайте лучшее решение, которое работает на всех таблицах –

Смежные вопросы