私はいたるところを見てきましたが、スペースのエスケープシーケンスが見つからないようです。現在、スペースに " " を使用していますが、機能していません。スペース文字を含むパスワードをハッシュすると、ハッシュ関数が正しく計算されないために必要です。
たとえば、プログラムに「aaa aaa」と入力すると、「">&q」が出力されます。私の関数は、パスワードに基づいて 7 文字のハッシュを出力する必要がありますが、代わりにスペースで停止し、3 文字の出力のみが残ります。ただし、関数は特定の入力が与えられた場合でもスペースを出力できます。
import java.util.*;
public class Hasher {
private static Scanner scan;
/*
* This function will generate a hash based off a password entered by the
* user
*/
public static void main(String[] args) {
scan = new Scanner(System.in);
System.out.println("What is your password?");
String password = scan.next();
String characters = "qwertyuiopasdfghjklzxcvbnm";
characters = characters + characters.toUpperCase();
characters = characters + "1234567890";
characters = characters + " ";
characters = characters + "!@#$%^&*()_+-=`~\b[]?-{};',./:\"<>?\\";
char[] array = new char[2 * characters.length()];
for (int y = 0; y < array.length; y++) {
Random rand = new Random(y);
array[y] = characters.charAt(rand.nextInt(characters.length()));
}
String newPass = "";
for (int y = 0; y < password.length(); y++) {
char x = password.charAt(y);
for (int z = 0; z < characters.length(); z++) {
if (x == characters.charAt(z)) {
Random rand = new Random(y);
x = array[z + rand.nextInt(array.length - z)];
newPass = newPass + x;
break;
}
}
}
System.out.println("Your hash is: " + newPass);
}
}