gpt4 book ai didi

java - 如何模糊扫描仪输入文本?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:10:31 25 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
Hide input on command line

我正在制作一个密码安全检查程序,我的问题很奇怪,因为我的程序运行得很好。我想知道是否有任何方法可以使输入到控制台的文本看起来像在密码字段中一样。即在用户按下返回键之前,输入的单词将显示为“****”。

我知道 JFrame 有一个 JPasswordField 方法,但我认为这对我仅使用 Scanner 没有帮助。

这是我的代码:

import java.util.Scanner;

public class SecurityCheckerMain {

static String enteredPassword;

public static void main(String[] args) {

Scanner input = new Scanner(System.in);
System.out.println("Please enter your password: ");
enteredPassword = input.nextLine();
Checker tc = new Checker(enteredPassword);
tc.checkSecurity();

}

}

public class Checker {

//number of chars : the Higher the Better("password must be greater than 8 chars"){done}
//combination of uppercase and lowercase{done}
//contains numbers{done}
//non repeated characters (every char is different ascii char){done}
//is not a consecutive password ie 123456789 or 987654321{done}
//is not blank ("[space]"){done}


int pLength;
final int MAX_STRENGTH = 10;
int pStrength = 0;
String pass;

public Checker(String pwd){
pass = pwd;
pLength = pwd.length();

}

public void checkSecurity(){
if(pass.isEmpty()){
System.out.println("Password Field is Empty! Password is Very Insecure.");
}
if(pLength >= 8){
pStrength++;
if(pLength >= 12){
pStrength++;
if(pLength >= 16){
pStrength++;
}
}
}
if(hasUpperCase(pass) && hasLowerCase(pass)){
pStrength+=2;
}
if(containsNumbers(pass)){
pStrength+=2;
}
if(hasNoRepeats(pass)){
pStrength+=2;
}
if(!containsConsecutiveNums(pass)){
pStrength++;
}

System.out.println("Your password strength is rated at " + pStrength +"/" + MAX_STRENGTH);

}


//Component Methods

public boolean hasUpperCase(String str){
for(int i = 0; i<pLength; i++){
if(Character.isUpperCase(str.charAt(i))){
return true;
}
}
return false;

}

public boolean hasLowerCase(String str){
for(int i = 0; i<pLength; i++){
if(Character.isUpperCase(str.charAt(i))){
return true;
}
}
return false;
}

public boolean containsNumbers(String str){
for(int i = 0; i<pLength; i++){
if(Character.isDigit(str.charAt(i))){
return true;
}
}
return false;
}

public boolean hasNoRepeats(String str){
for(int i = 0; i<pLength; i++)
if(containsChar(str, str.charAt(i))){
return false;
}
return true;
}


public boolean containsChar(String s, char search) {
if (s.length() == 0)
return false;
else
return s.charAt(0) == search || containsChar(s.substring(1), search);
}

public boolean containsConsecutiveNums(String str){
for(int i = 0; i<pLength; i++){
if(Character.isDigit(str.charAt(i))){
if(str.charAt(i)-1 == str.charAt(i-1) || str.charAt(i)+1 == str.charAt(i+1)){
return true;
}
}
}
return false;
}
}

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com