【问题标题】:Java hashing passwordsJava 哈希密码
【发布时间】:2012-03-17 21:57:48
【问题描述】:

我正在尝试创建一个循环,从数组列表中获取密码,对其进行哈希处理,然后将哈希处理后的密码传递回 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;
}

}

目前我只是让循环打印出纯文本密码,然后结束循环。 任何帮助都会很棒。非常感谢。

【问题讨论】:

标签: java hash arraylist


【解决方案1】:

您可以使用 SHA1 摘要。请参阅下面从纯字符串创建摘要的示例。 (您需要将纯密码的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();
}

使用上述方法对密码进行哈希处理,并将哈希值 (SHA1) 存储在 Person 类中

【讨论】:

    【解决方案2】:

    我建议看看MessageDigest。获取您想要的实例,将密码转换为 bytes[](使用 getBytes("UTF-8");)并检索摘要字节。然后,您可以通过将字节转换为十六进制值来将它们转换为字符串。

    【讨论】:

      猜你喜欢
      • 2018-03-13
      • 2012-07-07
      • 1970-01-01
      • 2023-04-08
      • 2015-11-30
      • 2018-01-31
      • 2020-04-19
      • 2017-11-30
      相关资源
      最近更新 更多