Как создать Генератор паролей с PBKDF2 и вновь появившийся пароль при запросе того же пароля
import java.io.UnsupportedEncodingException;
import javax.swing.JOptionPane;
import com.sun.org.apache.xerces.internal.impl.dv.util.HexBin;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.PBEKeySpec;
import java.security.NoSuchAlgorithmException;
import java.security.spec.InvalidKeySpecException;
public class PasswortGen
{
static final int SOLL_LAENGE_EINGABE = "laenge".length();
static final int POSITION_DOPPELPUNKT = 2;
static final String Masterpasswort = JOptionPane.showInputDialog("Geben Sie Ihr Masterpasswort ein");
static final String Versionsnummer = "Geben Sie die Website, sowie die aktuelle Versionsnummer ein";
static final String Kennung = "Geben Sie Ihre Kennung ein";
static final String laenge = JOptionPane.showInputDialog("Geben Sie die gewünschte Laenge ein (16 - Empfohlen)");
public static void main(String[] args) throws UnsupportedEncodingException { /*
* Die main1-Methode kombiniert alle Methoden zu Erstellung eines Passwords und leifert diesen als String, mit Hilfe der Konsole, aus.
*/
String password = "pass"; //Dem Datentyp String mit der Erkennung password wird der Wert "pass" zugewiesen
String salt = "1234";//Dem Datentyp String mit der Erkennung salt wird der Wert "1234" zugewiesen
int iterations = 10000;//Dem Datentyp Int mit der Erkennung iterations wird der Wert 10000 zugewiesen
int keyLength = 16 ; //Dem Datentyp Int mit der Erkennung keyLength wird der Wert 16 zugewiesen, also das Passwort hat eine Lönge von 16
char[] passwordChars = password.toCharArray(); //Dem Datentyp Char[] mit der Erkennung passwordChars weist die Charakters zu.
byte[] saltBytes = salt.getBytes(); //Dem Datentyp byte mit der Erkennung saltBytes wird der Wert von saltBytes nachgefragt.
byte[] hashedBytes = hashPassword(passwordChars, saltBytes, iterations, keyLength); // WEIS ICH NICHT
String hashedString = HexBin.encodeHexString(hashedBytes); // WEIS ICH NICHT
System.out.println(hashedString); //Die Konsole liefert den String "hashedString".
}
/*
* Die main1-Methode kombiniert alle Methoden zu Erstellung eines Passwords und leifert diesen als String, mit Hilfe der Konsole, aus.
*/
public static byte[] hashPassword( final char[] password, final byte[] salt, final int iterations, final int keyLength ) {
try {
SecretKeyFactory skf = SecretKeyFactory.getInstance( "PBKDF2WithHmacSHA512" );
PBEKeySpec spec = new PBEKeySpec( password );
SecretKey key = skf.generateSecret( spec );
byte[] res = key.getEncoded( );
return res;
} catch ( NoSuchAlgorithmException | InvalidKeySpecException e ) {
throw new RuntimeException( e );
}
}
}
Мне действительно нужна помощь с этим кодом. Был бы очень признателен, чтобы получить это работает. Не обращайте внимания на эти комментарии, я сделал их на немецком языке.
I have to put in a password( like water), that will be encrypted into a password which i should set the length of.
Поэтому после этого я должен снова ввести воду, и тот же пароль, к которому он был зашифрован, должен снова появиться.
Thanks
ADADADADDADADADADADDADADADADDDADADDADADDADADADADADADADDADADADADADDADADADADDDADADDADADDADADADADADADADDADADADADADDADADADADDDADADDADADDADADADADADADADDADADADADADDADADADADDDADADDADADDADADADADADADADDADADADADADDADADADADDDADADDADADDADADADADADADADDADADADADADDADADADADDDADADDADADDADADADADADADADDADADADADADDADADADADDDADADDADADDADADAD