[英]Java hashing passwords
我試圖做一個循環,從數組列表中獲取密碼,對其進行哈希處理,然后將散列的密碼傳遞回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;
}
}
目前,我只是讓循環打印出純文本密碼,然后結束循環。 任何幫助都將是驚人的。 非常感謝你。
您可以使用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();
}
使用上面的方法對密碼進行哈希處理並將哈希值(SHA1)存儲在Person
類中
我建議看看MessageDigest 。 獲取所需的實例,將密碼轉換為bytes [](使用getBytes("UTF-8");
)並檢索摘要的字節。 然后,您可以將字節轉換為十六進制值,從而將其轉換為字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.