Kann mir jemand diesen Java Password-generator mit PBKDF2 erklären?

Hey, kann mir bitte jemand diesen Code hier erklären. Ich blicke nicht durch was hier vorgeht. Also was in diesen Methoden gemacht wird.

import java.math.BigInteger;

import java.security.NoSuchAlgorithmException;

import java.security.SecureRandom;

import java.security.spec.InvalidKeySpecException;

import javax.crypto.SecretKeyFactory;

import javax.crypto.spec.PBEKeySpec;

public class passgen {

public static void main(String[] args) throws NoSuchAlgorithmException, InvalidKeySpecException {

// TODO Auto-generated method stub

String originalPassword = "password";

String generatedSecuredPasswordHash = generateStorngPasswordHash(originalPassword);

System.out.println(generatedSecuredPasswordHash);

boolean matched = validatePassword("password", generatedSecuredPasswordHash);

System.out.println(matched);

matched = validatePassword("password1", generatedSecuredPasswordHash);

System.out.println(matched);

}

private static String generateStorngPasswordHash(String password) throws NoSuchAlgorithmException, InvalidKeySpecException

{

int iterations = 1000;

char[] chars = password.toCharArray();

byte[] salt =getSalt();

PBEKeySpec spec = new PBEKeySpec(chars, salt, iterations, 8);

SecretKeyFactory skf = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");

byte[] hash = skf.generateSecret(spec).getEncoded();

return iterations + ":" + toHex(salt) + ":" + toHex(hash);

}

private static byte[] getSalt() throws NoSuchAlgorithmException

{

SecureRandom sr = SecureRandom.getInstance("SHA1PRNG");

byte[] salt = new byte[16];

sr.nextBytes(salt);

return salt;

}

private static String toHex(byte[] array) throws NoSuchAlgorithmException

{

BigInteger bi = new BigInteger(1, array);

String hex = bi.toString(16);

int paddingLength = (array.length * 2) - hex.length();

if(paddingLength > 0)

{

return String.format("%0" +paddingLength + "d", 0) + hex;

}else{

return hex;

}

}

private static boolean validatePassword(String originalPassword, String storedPassword) throws NoSuchAlgorithmException, InvalidKeySpecException

{

String[] parts = storedPassword.split(":");

int iterations = Integer.parseInt(parts[0]);

byte[] salt = fromHex(parts[1]);

byte[] hash = fromHex(parts[2]);

PBEKeySpec spec = new PBEKeySpec(originalPassword.toCharArray(), salt, iterations, hash.length * 8);

SecretKeyFactory skf = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");

byte[] testHash = skf.generateSecret(spec).getEncoded();

int diff = hash.length ^ testHash.length;

for(int i = 0; i < hash.length && i < testHash.length; i++)

{

diff |= hash[i] ^ testHash[i];

}

return diff == 0;

}

private static byte[] fromHex(String hex) throws NoSuchAlgorithmException

{

byte[] bytes = new byte[hex.length() / 2];

for(int i = 0; i<bytes.length ;i++)

{

bytes[i] = (byte)Integer.parseInt(hex.substring(2 * i, 2 * i + 2), 16);

}

return bytes;

}

}

...zum Beitrag

Das default password wird nur gesalted und gehasht.

...zur Antwort

Erstmal, wenn du mit App Inventor arbeitest programmierst du nicht. Das ist ja nur ein Drag & Drop tool welches du verwendest, um die Logik hinter dem Programmieren zu lernen. Programmieren kannst du mit C, C++, C#, VBA, Java etc... ;)

Zu deiner Frage:

Du kannst deinem Programmcode sicher eine Taste zuweisen und dann als ID eine andere Taste verwenden.

Also wenn du z.B u drückst, dass dann der up key also Pfeil nach oben gesendet wird. Das müsste gehen.

Ich kenne mich nicht mit dem App Inventor aus, aber beim richtigen Programmieren geht das, somit solltest du das auch im App Inventor zuweisen können.

...zur Antwort

Spotify

...zur Antwort

Ein Freund von mir hat einen AMD Prozessor. Er muss regelmössig beim zocken (Arma 3) das Case öffnen, da der Prozessor immer überhitzt. Er hat einen sehr starken kühler für die CPU der um 1cm nicht an der Case Gegenwand zu der CPU ankommt. Kauf dir einen starken Intel i5 oder wenn du mer Geld zur verfügung hast einen Intel i7 4790k 4.0 gHz (Turbo: 4.4 gHz) Lg Allesfrager472

...zur Antwort

Also ich habe die Logitech G600. Die hat auch Daumentasten. Die sind richtig praktisch zum Hotkeyn. Ich empfehle dir dir Maus

...zur Antwort

Mit Altagsgegenständen wüsste ich jetzt nichts, aber schau doch mal da:

https://www.youtube.com/watch?v=VRrLOZUgjGA

Allesfrager472 | 18.02.2015

...zur Antwort

Ist unten auch keinen blauen Banner, auf dem steht : Queue oder joining Server?

...zur Antwort

Du wurdest derbe veräppelt. Mach sofort eine Systemwiederherstellung, bevor die deine Daten entwendet haben, wenn es nicht schon zu spät ist. Viel Glück

...zur Antwort

Du lädst dir die richti OF Version auf der offizuellen OptiFine Seite runter. Dann lädt es eine .jar datei herunter. Wenn diese gedownloadet ist führst du diese Datei aus. Jetzt wird OptiFine installiert. Wenn es einen Fehler anzeigt musst du zuerst 8m Launcher die Version spielen für die OF gedacht wäre, dann wenn du den Startbildschirm siehst, schliesst du Minecraft wieder und führst die .jar Datei welche du gedownloadet hast aus dann sollte es gehen ;)

...zur Antwort

Zahnarzt. Oder sofort ins Krankenhaus

...zur Antwort