Java随机密码生成器问题

Java随机密码生成器问题,java,Java,所以我需要知道是否有一种方法可以向jTextField控件显示此代码的最终密码,因为当我尝试时,我得到了无法转换为字符串的问题char 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

所以我需要知道是否有一种方法可以向jTextField控件显示此代码的最终密码,因为当我尝试时,我得到了无法转换为字符串的问题char

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())));
} 
import java.util.Random;
随机r=新随机();
字符串字母表=“qwertyuiopasdfghjklzxcvnm”;
对于(int i=0;i<50;i++){
System.out.println(alphabet.charAt(r.nextInt(alphabet.length()));
} 

当前在代码中,您只是随机生成字符并打印。您需要从所有生成的字符中形成一个
字符串
,然后可以将其设置为
文本字段
中的文本

您可以拥有一个
StringBuilder
,它将附加每个随机
字符

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);

目前,在代码中,您只是随机生成字符并将其打印出来。您需要从所有生成的字符中形成一个
字符串
,然后可以将其设置为
文本字段
中的文本

您可以拥有一个
StringBuilder
,它将附加每个随机
字符

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);
Random r=new Random();
字符串字母表=“qwertyuiopasdfghjklzxcvnm”;
StringBuilder buf=新的StringBuilder();
对于(int i=0;i<50;i++){
buf.append(alphabet.charAt)(r.nextInt(alphabet.length());
}
jTextField.setText(buf.toString());
Random r=new Random();
字符串字母表=“qwertyuiopasdfghjklzxcvnm”;
StringBuilder buf=新的StringBuilder();
对于(int i=0;i<50;i++){
buf.append(alphabet.charAt)(r.nextInt(alphabet.length());
}
jTextField.setText(buf.toString());

如果您试图提供安全的随机生成密码,请使用正确的方法。请参阅。我没有任何关于它的英文文章,但如果你能与一些翻译,请阅读,看看如何可以黑客这样的算法

编辑:


如果您试图提供安全的随机生成密码,请使用适当的方法。请参阅。我没有任何关于它的英文文章,但如果你能与一些翻译,请阅读,看看如何可以黑客这样的算法

编辑:



charAt
返回一个
char
,如果您想要字符串,请使用
“+char
或其他等效内容,在安全性很重要的地方不要使用伪随机生成器。他们的行为是确定性的,可能导致安全漏洞。你想做的是什么?它不起作用吗?也许你应该考虑使用<代码> CARAT 返回一个<代码> char < /代码>,如果你想要一个字符串使用<代码>“+ char < /代码>或类似的东西,不要使用安全性很重要的伪随机生成器。他们的行为是确定性的,并且可能导致安全漏洞。你想做的是什么?它不起作用吗?也许你应该考虑使用<代码>随机< /代码>不应该用于密码生成。@贡克佐我指出了Sistvyo犯下的错误,这就是问题中提出的问题。他没有问如何生成更安全的密码,而我认为,这个
50个字母长的密码确实提供了很好的安全性!如果可以预测密码的顺序,那么密码的长度与安全性无关。这是一种什么样的方法,仅仅因为有人没有要求检查这一部分,你就可以让代码存在这样的安全风险呢?密码的长度是密码强大的原因。如果您的密码为
50个
字母,并且所有可能的字母都是
26
,那么总的可能性将是
26^(50)
,这是一个非常大的数字,使用暴力很难破解。现在,如果长度大约是
200
,那么总的可能性是
26^200
。你能看出区别吗?你能理解我说的不是暴力强制吗?
Random
不应该用于生成密码。@gonczor我指出了@SteveYo犯的错误,这就是问题中提出的问题。他没有问如何生成更安全的密码,而我认为,这个
50个字母长的密码确实提供了很好的安全性!如果可以预测密码的顺序,那么密码的长度与安全性无关。这是一种什么样的方法,仅仅因为有人没有要求检查这一部分,你就可以让代码存在这样的安全风险呢?密码的长度是密码强大的原因。如果您的密码为
50个
字母,并且所有可能的字母都是
26
,那么总的可能性将是
26^(50)
,这是一个非常大的数字,使用暴力很难破解。现在,如果长度大约是
200
,那么总的可能性是
26^200
。你能看出其中的区别吗?你能理解我说的不是暴力强迫吗?请用它来生成密码。@OleV.V。是:SecureRandom更好,请用于生成密码。@OleV.V。是的,安全性更好
    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());