我真的需要有关此代码的帮助。非常感谢让这个运行。不要介意这些评论,我是用德语写的。
我必须输入一个密码(如水),它将被加密为我应该设置长度的密码。所以在那之后我应该再次输入水和相同的密码,它被加密应该再次出现。
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 );
}
}
}
先感谢您!