Java哈希密码

我试图创建一个循环,从数组列表中获取密码,散列它们,然后将散列密码传递回Person对象。

import java.util.ArrayList; public class CompanyDatabase { public ArrayList getPeople() { ArrayList people = new ArrayList(); 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 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; } 

}

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

您可以使用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)

我建议你看看MessageDigest 。 获取所需的实例,将密码转换为bytes [](使用getBytes("UTF-8"); )并检索消化的字节。 然后,您可以通过将字节转换为hex值将字节转换为字符串。