密码检查-C语言/Java

简介: 密码检查-C语言/Java

描述

       小明同学最近开发了一个网站,在用户注册账户的时候,需要设置账户的密码,为了加强账户的安全性,小明对密码强度有一定要求:


       1. 密码只能由大写字母,小写字母,数字构成;


       2. 密码不能以数字开头;


       3. 密码中至少出现大写字母,小写字母和数字这三种字符类型中的两种;


       4. 密码长度至少为8


       现在小明受到了n个密码,他想请你写程序判断这些密码中哪些是合适的,哪些是不合法的。


输入描述


       输入一个数n,接下来有n(n≤100)行,每行一个字符串,表示一个密码,输入保证字符串中只出现大写字母,小写字母和数字,字符串长度不超过100。


输出描述


       输入n行,如果密码合法,输出YES,不合法输出NO。


示例

输入:1

          CdKfIfsiBgohWsydFYlMVRrGUpMALbmygeXdNpTmWkfyiZIKPtiflcgppuR

输出:YES


分析:先对密码第一个字符和密码长度进行判断,若不合法,直接判断下一个密码,再对密码这个字符串进行遍历,分别求各种字符的个数,如果输入的字符不在字母大小写和数字范围内,则不合法,直接判断下一个密码,最后判断小写字母、大写字母和数字三类中有几类


C语言


#include <stdio.h>
#include<string.h>
int main() {
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
         char str[101]={0};
        scanf("%s",str);
        if(strlen(str)<8)
        {
            printf("NO\n");
            continue;
        }
        if(str[0]>='0'&&str[0]<='9')
        {
            printf("NO\n");
            continue;
        }
        //分别记录小写字母、大写字母、数字和其他字符的个数
        int character=0,CHAR=0,num=0,other=0;
        for(int j=0;str[j]!='\0';j++)
        {
            if(str[j]>='a'&&str[j]<='z') character++;
            else if(str[j]>='A'&&str[j]<='Z') CHAR++;
            else if(str[j]>='0'&&str[j]<='9') num++;
            else other++;
        }
        if(other!=0)
        {
            printf("NO\n");
            continue;
        }
        //三种字符出现少于两种
        if((character>0)+(CHAR>0)+(num>0)<2)
        {
            printf("NO\n");
            continue;
        }
        printf("YES\n");
    }  
    return 0;
}


Java


import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
                Scanner in = new Scanner(System.in);
                int n=in.nextInt();
                in.nextLine();
                for(int i=1;i<=n;i++)
                {
                    String str=in.nextLine();
                    char[] ch=str.toCharArray();
                    if(ch.length<8)
                    {
                    System.out.println("NO");
                    continue;
                    }
                    if(ch[0]>='0'&&ch[0]<='9')
                    {
                        System.out.println("NO");
                        continue;
                    }
                    //分别记录小写字母、大写字母、数字和其他字符的个数
                    int character=0,CHAR=0,num=0,other=0;
                    for(int j=0;j<ch.length;j++)
                   {
                            if(ch[j]>='a'&&ch[j]<='z') character++;
                            else if(ch[j]>='A'&&ch[j]<='Z') CHAR++;
                            else if(ch[j]>='0'&&ch[j]<='9') num++;
                            else other++;
                   }
                   if(other!=0)
                   {
                            System.out.println("NO");
                            continue;
                   }
                   //字符类型个数
                   int count=0;
                   if(character>0){
                            count++;
                   }
                   if(CHAR>0){
                             count++;
                   }
                   if(num>0){
                            count++;
                   }
                   if(count<2){
                           System.out.println("NO");
                            continue;
                   }
                   System.out.println("YES");
             }  
     }
}


目录
相关文章
|
8天前
|
Java
让星星⭐月亮告诉你,Java异常分类[Throwable(Error/Exception(RuntimeException/其他异常)) 检查时异常 非检查时异常]
本文深入解析了Java异常处理机制,重点介绍了`Throwable`类及其子类`Error`和`Exception`,并通过实例代码、流程图和表格详细解释了异常的分类、区别及处理方法,帮助读者掌握异常处理的关键技巧,提升程序的稳定性和健壮性。
24 1
|
13天前
|
Java 编译器 C语言
【一步一步了解Java系列】:Java中的方法对标C语言中的函数
【一步一步了解Java系列】:Java中的方法对标C语言中的函数
16 3
|
13天前
|
存储 Java C语言
【一步一步了解Java系列】:了解Java与C语言的运算符的“大同小异”
【一步一步了解Java系列】:了解Java与C语言的运算符的“大同小异”
34 3
|
13天前
|
Java 编译器 C语言
【一步一步了解Java系列】:探索Java基本类型与C语言的区别
【一步一步了解Java系列】:探索Java基本类型与C语言的区别
32 2
|
18天前
|
安全 算法 Java
数据库信息/密码加盐加密 —— Java代码手写+集成两种方式,手把手教学!保证能用!
本文提供了在数据库中对密码等敏感信息进行加盐加密的详细教程,包括手写MD5加密算法和使用Spring Security的BCryptPasswordEncoder进行加密,并强调了使用BCryptPasswordEncoder时需要注意的Spring Security配置问题。
58 0
数据库信息/密码加盐加密 —— Java代码手写+集成两种方式,手把手教学!保证能用!
|
2月前
|
Java API 数据安全/隐私保护
【Azure Developer】使用 adal4j(Azure Active Directory authentication library for Java)如何来获取Token呢 (通过用户名和密码方式获取Access Token)
【Azure Developer】使用 adal4j(Azure Active Directory authentication library for Java)如何来获取Token呢 (通过用户名和密码方式获取Access Token)
|
2月前
|
存储 搜索推荐 Java
|
4月前
|
Java 数据安全/隐私保护
java密码强度校验
java密码强度校验
119 1
|
3月前
|
IDE Java 持续交付
Java中的代码质量检查与自动化工具
Java中的代码质量检查与自动化工具
|
3月前
|
Java Redis 数据安全/隐私保护
Redis14----Redis的java客户端-jedis的连接池,jedis本身是线程不安全的,并且频繁的创建和销毁连接会有性能损耗,最好用jedis连接池代替jedis,配置端口,密码
Redis14----Redis的java客户端-jedis的连接池,jedis本身是线程不安全的,并且频繁的创建和销毁连接会有性能损耗,最好用jedis连接池代替jedis,配置端口,密码