Java随机密码生成器问题

时间:2017-04-27 11:02:11

标签: java

所以我需要知道有没有办法向jTextField控件显示此代码的最终密码,因为当我尝试时我遇到问题char无法转换为String。

import java.util.Random;

Random r = new Random();

String alphabet = "qwertyuiopasdfghjklzxcvbnm";
for (int i = 0; i < 50; i++) {
    System.out.println(alphabet.charAt(r.nextInt(alphabet.length())));
} 

3 个答案:

答案 0 :(得分:1)

目前在您的代码中,您只是随机生成字符并打印它。您需要从所有这些生成的字符中形成String,然后您可以将其设置为TextField中的文本。

您可以StringBuilder附加每个随机character

String alphabet = "qwertyuiopasdfghjklzxcvbnm";
StringBuilder password=new StringBuilder();

for (int i = 0; i < 50; i++) {
    password.append(alphabet.charAt(r.nextInt(alphabet.length())));
} 
String password_str=password.toString();
System.out.println(password_str);

假设您有一个JTextField,那么您可以将password_str设置为其值。

JTextField password_field = new JTextField();
password_field.setText(password_str);

答案 1 :(得分:1)

    Random r = new Random();

    String alphabet = "qwertyuiopasdfghjklzxcvbnm";
    StringBuilder buf = new StringBuilder();
    for (int i = 0; i < 50; i++) {
        buf.append(alphabet.charAt(r.nextInt(alphabet.length())));
    }
    jTextField.setText(buf.toString());

答案 2 :(得分:0)

如果您尝试使用正确的methdos提供安全的随机生成密码,请使用SecureRandom。请参阅this。我在英语中没有任何关于它的文章,但是如果你能继续使用一些翻译,请阅读this one以了解如何破解这样的算法。

编辑:

More on difference between Random and SecureRandom