1

我真的需要有关此代码的帮助。非常感谢让这个运行。不要介意这些评论,我是用德语写的。

我必须输入一个密码(如水),它将被加密为我应该设置长度的密码。所以在那之后我应该再次输入水和相同的密码,它被加密应该再次出现。

    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 );

                }

            }


    }

先感谢您!

4

0 回答 0