首页 > 编程语言 >密码验证合格程序

密码验证合格程序

时间:2023-02-24 23:47:17浏览次数:40  
标签:输出 OK 合格 验证 fmt NG 密码 Println input

密码要求:

1.长度超过8位

2.包括大小写字母.数字.其它符号,以上四种至少三种

3.不能有长度大于2的包含公共元素的子串重复 (注:其他符号不含空格或换行)

输入描述:

一组字符串。

输出描述:

如果符合要求输出:OK,否则输出NG

示例1

输入:
021Abc9000
021Abc9Abc1
021ABC9000
021$bc9000
输出:
OK
NG
NG
OK


package main

import (
    "bufio"
    "fmt"
    "os"
    "strings"
    "unicode"
)

func main() {
    input := bufio.NewScanner(os.Stdin)
    for input.Scan() {
        if CheckPassword(input.Text()) {
            fmt.Println("OK")
        }else{
            fmt.Println("NG")
        }
    }
}

func CheckPassword(password string) bool {
    length := len(password)
    if length <= 8 {
        return false
    }
    hasLower, hasUpper, hasDigit, hasSpecial := 0, 0, 0, 0
    for _, v := range password {
        if unicode.IsLower(v) {
            hasLower = 1
        } else if unicode.IsUpper(v) {
            hasUpper = 1
        } else if unicode.IsDigit(v) {
            hasDigit = 1
        } else if strings.ContainsRune("!@#$%^&*()-+", v) {
            hasSpecial = 1
        }
    }
    if hasLower+hasUpper+hasDigit+hasSpecial < 3 {
        return false
    }
    map1 := make(map[string]bool)
    for i := 0; i < length-2; i++ {
        if _, ok := map1[password[i:i+3]]; !ok {
            map1[password[i:i+3]] = true
        } else {
            return false
        }
    }
    return true
}

 

标签:输出,OK,合格,验证,fmt,NG,密码,Println,input
From: https://www.cnblogs.com/yimingwang/p/17153540.html

相关文章

  • satoken实现登陆验证
    1.第一步导入依赖//Sa-Token权限认证,在线文档:https://sa-token.ccimplementation'cn.dev33:sa-token-spring-boot-starter:1.34.0'2.第二步配置文件server:......
  • 渗透-kali Linux忘记用户名与登录密码的解决办法
    当kailLinux忘记登录用户名和登录密码时在kail的gui页面是没有任何的找回密码之类的按钮解决办法1:重启kail系统 2:在重启过程中按E3:进入......
  • 数字彩色图像的水印嵌入仿真,带GUI界面,可以选择图片和水印,可以选择不同的攻击方式验
    1.算法描述      随着互联网的普及和数字技术的广泛应用,数字产品变得极大丰富并且传播便捷,同时版权保护问题也日益突出。传统的信息安全技术在数字产品版权保护方面......
  • 找不到AppleID密码的iPhone
    几年前买了一个iPhone6,刚用不久就黑屏了。在维修期间就拿公司的测试设备来用,在维修的那几天中因为频繁的切换设备登录QQ,导致QQ账号异常被封掉了。起初对于QQ被封了,不怎么在......
  • SQL注入漏洞-通过网页查找最高管理员的用户名和密码
    打开navicat中information_schema的TABLES表和COLUMNS表--查找zblogphp数据库中有哪些表SELECTTABLE_NAMEFROMinformation_schema.`TABLES`WHERETABLE_SCHEMA='zblog......
  • 学习编写滑块验证
    前言:目前最流行的验证方式就是滑块验证了,虽然有很多UI库都有整个组件,但是思路方法还是值得学习的。 CSS方面:     ①:首先是一个大的背景图②③:这里可以通过......
  • Windows 技术篇 - 远程桌面连接不保存密码、每次都要输入密码问题解决
    https://blog.csdn.net/qq_38161040/article/details/120013883通过 gpedit.msc 打开本次组策略编辑器。选择 模板管理-系统-凭据分配-允许分配保存的凭据用......
  • JavaScript 如何验证 URL
    前言当开发者需要为不同目的以不同形式处理URL时,比如说浏览器历史导航,锚点目标,查询参数等等,我们经常会借助于JavaScript。然而,它的频繁使用促使攻击者利用其漏洞。这种被......
  • 表单验证
    方法一:载入表单类,并设置验证规则:   载入辅助函数,用于视图显示错误提示:  提交表单失败后保留原值: 文本框:  单选框: 文本域:  方法二:创建......
  • Java国际化号码验证方法,国内手机号正则表达式
    Java国际化号码验证方法,国内手机号正则表达式 中国电信号段133、149、153、173、177、180、181、189、199中国联通号段130、131、132、145、155、156、166、175、17......