2012-03-17 5 views
0

私は、配列リストからパスワードを取得し、ハッシュし、ハッシュされたパスワードをPersonオブジェクトに戻すループを作ろうとしています。Java hashing passwords

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-in-java – chandsie

答えて

0

MessageDigestをご覧になることをお勧めします。必要なインスタンスを取得し、パスワードをバイト[](getBytes("UTF-8");を使用)に変換し、ダイジェストされたバイトを取得します。バイトを文字列に変換するには、16進値に変換します。

1

SHA1 diggestを使用できます。下のプレーンストリングからdiggestを作成する例を参照してください。 (あなたはワイルはSHAsum()にあなたの平野パスワードのbyte[]を渡す必要があります。私は、あなたが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)