1

私はいたるところを見てきましたが、スペースのエスケープシーケンスが見つからないようです。現在、スペースに " " を使用していますが、機能していません。スペース文字を含むパスワードをハッシュすると、ハッシュ関数が正しく計算されないために必要です。

たとえば、プログラムに「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);

    }

}
4

3 に答える 3

4

Scanner オブジェクトを構築するときは"\\n"、行全体をスキャンするように区切り文字 as を渡します。

何かのようなもの: new Scanner(System.in).useDelimiter("\\n");

于 2013-01-08T23:35:30.227 に答える
3

変えるだけ

String password = scan.next();

String password = scan.nextLine();
于 2013-01-08T23:38:35.073 に答える
1

これ

  String password = scan.next();

最初の単語のみを読み取ります。http://docs.oracle.com/javase/6/docs/api/java/util/Scanner.html#useDelimiter(java.lang.String )

区切り文字を改行\n文字に設定します。

于 2013-01-08T23:35:37.667 に答える