首页 > 其他分享 >后端面试题分享-密码强度检查器

后端面试题分享-密码强度检查器

时间:2024-06-17 10:57:14浏览次数:18  
标签:面试题 检查 正则表达式 是否 强度 密码 分享 可以

问题描述

编写一个函数,该函数接受一个字符串作为参数,检查该字符串是否符合密码强度要求, 返回True或False。

要求

密码强度要求如下:

  • 不能小于6个字符
  • 必须出现大写、小写、数字、特殊字符(!@#$%^&*_-) 的组合
  • 不能出现4个连续的字符,比如1234, dcba这样的规则
  • 建议使用正则表达式来实现密码强度检查。

测试代码

查看测试代码

解决思路

  1. 使用正则表达式:正则表达式是一种强大的字符串匹配工具,可以用来检查字符串是否符合特定的模式。我们可以使用正则表达式来检查密码是否符合要求。
  2. 循环检查:我们可以每个条件单独检查,比如检查密码长度、是否包含大写字母、小写字母、数字和特殊字符等。
  3. 避免连续字符:顺序的字符可以通过判断ascii码的差值来实现,如果差值连续为1/-1,则表示连续字符。

代码实现

查看重要代码的实现

性能优化小技巧

  1. 正则表达式需要编译的时间,如果需要频繁使用,可以用静态变量来存储编译好的正则表达式,减少编译时间
  2. 多个规则的判断可以合并到一个正则表达式中,减少判断次数
  3. 多个规则用||的方式判断,如果前面的规则不符合,后面的规则就不需要判断了,这样减少了判断次数

完整代码实现

查看完整代码的实现

总结

所有的后端工程师都应该有最基本的安全意识,要求用户设置强密码是保护用户数据的第一步。

这个简单的密码强度检查器可以帮助你检查用户设置的密码是否符合基本的安全标准,保护用户的数据安全。

你可以通过这个简单的实现来学习正则表达式的使用,以及如何检查密码的强度。如果你想进一步提高密码强度检查的功能,可以考虋增加更多的检查条件,比如密码是否包含用户名、是否包含常见的密码等。

所有的后端面试常见的问题,我们每天都会在我们的编程群里面讨论和Code review, 欢迎大家加入我们的编程群,一起学习和进步。

上面的代码,我们给出了优化的版本,可以关注入职啦公众号,里面每日分享文章,可以查看更多后端编程面试题

标签:面试题,检查,正则表达式,是否,强度,密码,分享,可以
From: https://blog.csdn.net/ruzhila/article/details/139592040

相关文章

  • PHP 程序员转 Go 语言的经历分享
    大家好,我是码农先森。之前有朋友让我分享从PHP转Go的经历,这次它来了。我主要从模仿、进阶、应用这三个方面来描述转Go的经历及心得。模仿是良好的开端,进阶是艰难的成长,应用是认知的提升。希望我的经历对大家能有所启发。模仿著名艺术家毕加索说过「模仿是人类一切学习的......
  • Flink面试必问题:时间和窗口处理面试题及参考答案(3万字长文)
    目录Flink中的事件时间(EventTime)和处理时间(ProcessingTime)有什么区别?Flink的容错机制是如何实现的?Flink中的窗口(Window)是什么?Flink支持哪些类型的窗口?如何定义一个滚动窗口(TumblingWindow)?如何定义一个滑动窗口(SlidingWindow)?如何定义一个会话窗口(SessionWindow)?Flin......
  • c# 检测密码强度,评分规则仿google
    参考delphi的代码更改为C#Delphi检测密码强度规则(仿google)仿google评分规则一、密码长度:5分:小于等于4个字符10分:5到7字符25分:大于等于8个字符二、字母:0分:没有字母10分:全都是小(大)写字母20分:大小写混合字母三、数字:0分:没有数字10......
  • Android Studio 插件分享——Gradle Utilities
    插件地址GradleUtilities这个插件可以用来管理Gradle相关的文件,同时用来升级Gradle这个插件提供了一些有用的实用程序来支持Gradle的日常工作:列出所有正在运行的Gradle守护进程及其状态。此外,还可以执行终止守护程序或查看其命令行的操作。管理Gradle主页:清除......
  • Android Studio 插件分享——Gradle Utilities
    插件地址GradleUtilities这个插件可以用来管理Gradle相关的文件,同时用来升级Gradle这个插件提供了一些有用的实用程序来支持Gradle的日常工作:列出所有正在运行的Gradle守护进程及其状态。此外,还可以执行终止守护程序或查看其命令行的操作。管理Gradle主页:清除......
  • 蓝奏云无视密码下载(要密码的可以不要密码),已测试该软件
    1、下载后安装工具,打开后可以看到输入网盘链接处和免费下载按钮。我们把想要下载的链接复制到输入处。2、我们可以看下这个资源如果直接在浏览器打开的话是需要密码的,才能提取资源的。3、点击“免费下载”后,软件会自动解析出资源直链。可以复制链接或者选择浏览器下载。百度......
  • MySql 常用面试题 (一)
    MySQL面试题及答案整理1.MySQL中有哪几种锁?MySQL中有多种锁类型,它们可以根据不同的分类标准进行划分。以下是一些主要的锁类型:按粒度分:表锁:每次操作锁住整张表。开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。常用于整表数据迁移的场景。行锁:对......
  • 大模型算法岗 100 道面试题(含答案)
    节前,我们星球组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、参加社招和校招面试的同学.针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。汇总合集:《大模型面试宝典》(2024版)发......
  • 密码工程-大素数
    任务详情在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务利用大整数库(GMP或者OpenSSL),参考《密码工程》p113伪代码实现GenerateLargePrime函数(10‘)在测试代码中产生一个在范围l=2^255至u=2^256-1内的素数。(5‘)用OpenSSL验证你产生的素数是不是正确(5’)提交......
  • 干货分享,数字化校园整体解决方案
     数字化校园囊括了校园事务的各个方面,同时, 数字化校园又是所有相关子系统的数据输出与枢纽。可以看出, 数字化校园是一个大而全的系统。鉴于此, 数字化校园的模块众多,本文将 数字化校园的所有模块做出大致梳理,以完整支持 数字化校园平台建设。基础平台 基于在信息化......