Как я могу создать пароль?

Перейдите к Инструментам> Опции> Усовершенствованная "Вкладка" (?)> Щелчок Вкладки

Шифрования кнопка "Validation" и снимите флажок с флажком для проверки законности

рекомендоваться, хотя это, это довольно небезопасно, поскольку это оставляет Вас широко открытыми для принятия любого недопустимого сертификата. Я только сделал бы это при использовании браузера на Интранет, где законность сертификата не является беспокойством Вам, или Вы не заинтересованы в целом.

11
задан Lii 31 January 2016 в 22:38
поделиться

6 ответов

RandomStringUtils из Apache Commons Lang предоставляют некоторые методы для генерации случайной строки, которую можно использовать в качестве пароля.


Вот несколько примеров создания 8-значных паролей :

// Passwords with only alphabetic characters.
for (int i = 0; i < 8; i++) {
    System.out.println(RandomStringUtils.randomAlphabetic(8));
}
System.out.println("--------");
// Passwords with alphabetic and numeric characters.
for (int i = 0; i < 8; i++) {
    System.out.println(RandomStringUtils.randomAlphanumeric(8));
}

, который дает следующий результат:

zXHzaLdG
oDtlFDdf
bqPbXVfq
tzQUWuxU
qBHBRKQP
uBLwSvnt
gzBcTnIm
yTUgXlCc
--------
khDzEFD2
cHz1p6yJ
3loXcBau
F6NJAQr7
PyfN079I
8tJye7bu
phfwpY6y
62q27YRt

Конечно, у вас есть также методы, которые могут ограничивать набор символов, разрешенных для генерации пароля:

for (int i = 0; i < 8; i++) {
    System.out.println(RandomStringUtils.random(8, "abcDEF123"));
}

создаст пароли только с символами a, b, c, D , E, F, 1, 2 или 3:

D13DD1Eb
cac1Dac2
FE1bD2DE
2ab3Fb3D
213cFEFD
3c2FEDDF
FDbFcc1E
b2cD1c11
34
ответ дан 3 December 2019 в 00:41
поделиться

Используйте SecureRandom , он предоставляет более случайные пароли.

Вы можете создать один пароль, используя что-то вроде этого (примечание: непроверенный код).

// put here all characters that are allowed in password
char[] allowedCharacters = {'a','b','c','1','2','3','4'};

SecureRandom random = new SecureRandom();
StringBuffer password = new StringBuffer();

for(int i = 0; i < PASSWORD_LENGTH; i++) {
    password.append(allowedCharacters[ random.nextInt(allowedCharacters.length) ]);
}

Примечание что этот не гарантирует , что каждый пароль будет содержать как цифры, так и символы.

10
ответ дан 3 December 2019 в 00:41
поделиться

Я бы сделал что-то вроде этого:

  1. Создайте два массива, один с разрешенными буквами, а другой с разрешенными цифрами.
  2. Используйте Random, чтобы определить длину пароля .
  3. Используйте Random, чтобы решить, будет ли следующий символ буквой или цифрой.
  4. Используйте Random еще раз, чтобы сгенерировать индекс для массива букв или цифр (в зависимости от того, что вы получили на шаге 3). Добавьте полученный символ к паролю.
  5. Повторяйте с 3 до тех пор, пока не получите количество символов, полученное в 2.
1
ответ дан 3 December 2019 в 00:41
поделиться

Это будет самый простой вариант :)

String char_group = "abcdefghijklmnopqrstuvwxyz";
String digit_group = "123456789";

// first choose a len of pwd
Random ran = new Random();
int pwd_len = ran.nextInt(50); //50 is the max length of password,say
// check that pwd_len is not less than 6
// do the check here

// finally create the password..
StringBuffer pwd = new StringBuffer();
Random RNG = new Random();
for (int i = 0; i < pwd_len ; i++) {
    int randomNum = RNG.nextInt(100);
    char c = '';
    // Here 25% is the ratio of mixing digits
    // in the password, you can change 4 to any
    // other value to change the depth of mix
    // or you can even make it random. 
    if (randomNum % 4 == 0) {
        c = digit_group[randomNum  % digit_group.length];
    } else {
        c = char_group[randomNum  % char_group.length];
    }
    pwd.append(c);
}
return pwd.toString();
0
ответ дан 3 December 2019 в 00:41
поделиться

Это тоже хороший вариант:

String password = Integer.toString((int) (Math.random() * Integer.MAX_VALUE), 36);

Однако он не гарантирует, что пароль всегда содержит как цифр, так и букв, но большую часть вышеупомянутые предложения также не делают этого.

3
ответ дан 3 December 2019 в 00:41
поделиться

Вот один, который я написал некоторое время назад:

package com.stackoverflow.does.my.code.for.me;

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.util.ArrayList;
import java.util.List;

public class PasswordUtil {

    /** Minimum password length = 6 */
    public static final int MIN_PASSWORD_LENGTH = 6;
    /** Maximum password length = 8 */
    public static final int MAX_PASSWORD_LENGTH = 8;

    /** Uppercase characters A-Z */
    public static final char[] UPPERS = new char[26];
    /** Lowercase characters a-z */
    public static final char[] LOWERS = new char[26];
    /**
     * Printable non-alphanumeric characters, excluding space.
     */
    public static final char[] SPECIALS = new char[32];
    public static final char[] DIGITS = new char[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };

    static {
        // Static initializer block for populating arrays
        int U = 'A';
        int l = 'a';
        int d = '0';
        for (int i = 0; i < 26; i++) {
            UPPERS[i] = (char) (U + i);
            LOWERS[i] = (char) (l + i);
            if (i < 10) {
                DIGITS[i] = (char) (d + i);
            }
        }
        int p = 0;
        for (int s = 33; s < 127; s++) {
            char specialChar = (char) 32;

            if (s >= 'a' && s <= 'z')
                s = 'z' + 1; // jump over 'a' to 'z'
            else if (s >= 'A' && s <= 'Z')
                s = 'Z' + 1; // jump over 'A' to 'Z'
            else if (s >= '0' && s <= '9')
                s = '9' + 1; // jump over '0' to '9'

            specialChar = (char) s;
            SPECIALS[p] = specialChar;
            p++;
        }
    }

    public String generatePassword() {
        List<char[]> activeSets = new ArrayList<char[]>(4);
        List<char[]> inactiveSets = new ArrayList<char[]>(4);

        activeSets.add(UPPERS);
        activeSets.add(LOWERS);
        activeSets.add(SPECIALS);
        activeSets.add(DIGITS);

        SecureRandom random = new SecureRandom();

        int passwordLength = 5 + random.nextInt(3);
        StringBuffer password = new StringBuffer(passwordLength + 1);

        for (int p = 0; p <= passwordLength; p++) {
            char[] randomSet = null;
            if (activeSets.size() > 1) {
                int rSet = random.nextInt(activeSets.size());
                randomSet = activeSets.get(rSet);
                inactiveSets.add(randomSet);
                activeSets.remove(rSet);
            } else {
                randomSet = activeSets.get(0);
                inactiveSets.add(randomSet);
                activeSets.clear();
                activeSets.addAll(inactiveSets);
                inactiveSets.clear();
            }
            int rChar = random.nextInt(randomSet.length);
            char randomChar = randomSet[rChar];
            password.append(randomChar);
        }

        return password.toString();
    }
}
5
ответ дан 3 December 2019 в 00:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: