首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建强密码[Python]

创建强密码[Python]
EN

Stack Overflow用户
提问于 2018-11-13 07:20:00
回答 2查看 735关注 0票数 0

需要创建一个函数来验证我的密码强度,因为第三个问题有问题。

  1. 输入的密码都是相同的。
  2. 密码长度为>= 8字符。

3.如果密码的第一个和最后一个字符是字母,那么密码的第一个字符必须是一个与密码的最后一个字母不同的字母,不管情况如何。例如,第一个字符是a,所以最后一个字符不能是A或a。

代码语言:javascript
复制
def validate_password(first_pwd, second_pwd):
    #Checks if password are same
    if first_pwd == second_pwd:
        #Checks if password is greater or equal to 8 characters
        if len(first_pwd) >= 8:
            #Checks if last and first character are alphabetic 
            if first_pwd[0].islower() and first_pwd[-1].isupper() or first_pwd[0].isupper() and first_pwd[-1].islower():
                return True
            else:
                return False


print(validate_password("Abcd1234","Abcd1234"))

我如何忽略密码末尾的数字,看看最近的字母,也就是d。

EN

回答 2

Stack Overflow用户

发布于 2018-11-13 07:51:34

你可以试着用正则表达式来解决它。这将检查一个字母的第一次出现是否等于(不敏感地)信的最后一次出现。

如果您真的只想检查字符串的第一个字符或最后一个字符,就必须修改regex或if子句。

您还可以进行额外检查,查看pwd中的最后一个字符是否等于下面列表字符中的最后一个字母。

代码语言:javascript
复制
import re

def validate_password(first_pwd, second_pwd):
# Checks if password are same
if first_pwd == second_pwd:
    # Checks if password is greater or equal to 8 characters
    if len(first_pwd) >= 8:
        # get only the letters of the password
        chars = re.findall(r'[A-Za-z]', first_pwd)
        # compare first and last occurrence of letters in pwd
        if chars[0].islower() and chars[-1].isupper() or chars[0].isupper() and chars[-1].islower():
            return True
        else:
            return False


print(validate_password("Abcd1234","Abcd1234"))

我也认为,这可能只够检查一下

代码语言:javascript
复制
if chars[0].upper() == chars[-1].upper(): # optional if needed: and first_pwd[-1].upper() == chars[-1].upper()
票数 0
EN

Stack Overflow用户

发布于 2018-11-13 07:53:52

我不是专家,但作为一个试图在python上不断改进的人,建议写单词而不是使用缩写。

此外,只有在密码与上一次检查相同的情况下,才会检查用于验证密码强度的rother函数,因此,请确保第一次检查中的长度大于8。

值得注意的是:

islower,isalpha 这里

具有较低的() 这里

我推荐youtubing,因为这是个很难的概念,海事组织

代码语言:javascript
复制
import re

def validate_password(first_password, second_password):
    if first_password == second_password:
        # Cannot be the previous password
        return False

    letters = "".join(re.findall("[a-zA-Z]+", first_password))
    first_letter = letters[0]
    last_letter = letters[-1]
    if len(first_password) >= 8:
        if first_letter.lower() == last_letter.lower():
            # First character can't be the same as last character
            return False
        else:
            # Every test passed
            return True
    else:
        # password too short
        return False

print(validate_password("Abcd1234","Abcd1234"))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53275777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档