2012-03-17 2 views
0

Я пытаюсь создать цикл, который получает пароли из списка массивов, хэширует их и передает хешированные пароли обратно в объект Person.Java-хеширование паролей

import java.util.ArrayList; 

public class CompanyDatabase { 

public ArrayList<Person> getPeople() { 
    ArrayList<Person> people = new ArrayList<Person>(); 
    String[] u = {"Joe","Stan","Leo","John","Sara","Lauren"}; 
    String[] p = {"pass4321", "asdfjkl", "genericpw", "13579", "helloworld", "companypass"}; 
    for(int j = 0; j < u.length; j++){ 
     Person temp = new Person(u[j],p[j]); 
     people.add(temp); 
    } 
    return people; 
} 
} 

import java.util.ArrayList; 
import java.util.Scanner; 
public class CompanyDatabaseDriver { 
    private static Scanner scan = new Scanner(System.in)); 
    public static void main(String args[]) { 

      CompanyDatabase bcData = new CompanyDatabase(); 
      ArrayList<Person> people = bcData.getPeople();  

      Hash_SHA hasher = new Hash_SHA(); 



      for(int i=0;i<people.size();i++){ 

       System.out.println(people.get(i).getPassword()); 
      } 
      // i know i have to use a variation of 
      // String hashString = hasher.getHash(passString); 
      // but do not really know what to do with it 



    } 

}

public class Person { 

private String username; 
private String password; 

public Person(String un, String pw){ 
    username = un; 
    password = pw; 
} 

public void setUsername(String un){ 
    username = un; 
} 

public void setPassword(String pw){ 
    password = pw; 
} 

public String getUsername(){ 
    return username; 
} 

public String getPassword(){ 
    return password; 
} 

}

В настоящее время я просто цикл распечатывания простые текстовые пароли, а затем окончание цикла. Любая помощь будет потрясающей. Большое спасибо.

+0

Там простой пример здесь: http://www.anyexample.com/programming/java/java_simple_class_to_compute_sha_1_hash.xml – mac

+0

Похожий вопрос здесь: http://stackoverflow.com/questions/3103652/hash-string -via-SHA-256-в-Java – chandsie

ответ

0

Предлагаю взглянуть на MessageDigest. Получите нужный экземпляр, преобразуйте пароль в байты [] (используя getBytes("UTF-8");) и извлеките переваренные байты. Затем вы можете превратить свои байты в строку путем преобразования их в шестнадцатеричные значения.

1

Вы можете использовать SHA1 diggest. См. Пример создания diggest из простой строки ниже. (Вы Вейл должен пройти byte[] вашего обычного пароля к SHAsum(). Я предполагаю, что вы знакомы с String.getBytes() методом)

import java.security.MessageDigest; 

public static String SHAsum(byte[] convertme) throws NoSuchAlgorithmException{ 
    MessageDigest md = MessageDigest.getInstance("SHA-1"); 
    return byteArray2Hex(md.digest(convertme)); 
} 

private static String byteArray2Hex(final byte[] hash) { 
    Formatter formatter = new Formatter(); 
    for (byte b : hash) { 
     formatter.format("%02x", b); 
    } 
    return formatter.toString(); 
} 

Используйте методы выше для хэширования паролей и хранить в Person классе хэшированного значение (SHA1)

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