Пароли хеширования Java - PullRequest
0 голосов
/ 18 марта 2012

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

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;
}

}

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

Ответы [ 2 ]

1 голос
/ 18 марта 2012

Вы можете использовать SHA1 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)

0 голосов
/ 18 марта 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...