目录
如何创建强密码 - 算法
创建一个强密码建议者 - 语法
方法 - 创建一个强密码建议者
创建一个强密码建议环境
Example 3
示例 3
输出
检查密码强度是否强、弱或中等
根据条件检查您的密码
结论
首页 后端开发 C++ 强密码建议程序

强密码建议程序

Sep 01, 2023 pm 04:53 PM
密码生成器 密码强度评估 密码策略实施

强密码建议程序

每年 5 月 7 日,全球组织都会提醒用户强密码的重要性。根据科技巨头谷歌的说法;

  • 他们的终端用户中有24%将单词"password"或"Qwerty"作为他们的账户密码。

  • 虽然,只有34%的用户经常更改他们的账户密码。

在当今这个技术先进的世界中,每次登录尝试都有可能遭受网络犯罪攻击。但现在许多人仍然在其专业和个人帐户中使用弱密码。

在这里,我们将讨论和检查所创建的密码是非常弱、弱、中等、强还是非常强。为此,我们将按照算法的要求来检查密码的创建标准。在今天的文章中,我们将学习如何使用C++代码创建一个强密码建议器。

如何创建强密码 - 算法

这是一个强密码的通用算法。它帮助开发者在C++环境中开发密码建议系统,并找到密码的特定标准。

  • 步骤 1 − 开始

  • 步骤 2 - 理想密码的长度应至少为八个字符。

  • 步骤 3 − 必须包含至少一个数字字符。

  • 第四步 - 至少应该有一个小写字母。[示例:a,b,c.....,z]

  • 第五步 - 至少应该有一个大写字母。[示例:A,B,C......,Z]

  • 步骤 6 − 它应该包含至少一个特殊字符。[示例:!@#$ %^&*()-+]

  • 第 7 步 - 结束

创建一个强密码建议者 - 语法

switch (k) {
   case 1:
      if ((count_alphabet == 7) && (count_number == 0 || count_ALPHABET == 0 || count_ALPHABET == 7 || count_s_symbol == 0))
         break;
      key = getKey();
      password = password + alphabet[key];
      count_alphabet++;
      count++;
         break;

   case 2:            
      if ((count_ALPHABET == 7) && (count_number == 0 || count_alphabet == 0 || count_alphabet == 5 || count_s_symbol == 0))
            break;
         key = getKey();
         password = password + ALPHABET[key];
         count_ALPHABET++;
         count++;
            break;
   case 3:
      if ((count_number == 7) && (count_alphabet == 0 || count_alphabet == 1 || count_ALPHABET == 3 || count_ALPHABET == 0 || count_s_symbol == 0))
            break;
         key = getKey();           
         key = key % 10;          
         password = password + number[key];
         count_number++;
         count++;
            break;

   case 4:
      if ((count_s_symbol == 1) && (count_alphabet == 0 || count_alphabet == 1 || count_ALPHABET == 0 || count_ALPHABET == 1 || count_number == 0))
            break;
         key = getKey();
         key = key % 6;
         password = password + s_symbol[key];

         count_s_symbol++;
         count++;
            break;
   }
   cout << "\n-----------------------------\n";
   cout << "        Enter The Password             \n";
   cout << "------------------------------\n\n";
   cout << " " << password add here;
   cout << "\n\n Press any key continue \n";
   getchar();
}
登录后复制

在这个语法中,条件检查了一个理想密码的最低要求。我们将每个可能的条件分为四种情况,检查是否满足了字母、数字和特殊符号字符的要求,以及是否满足了最低要求。在处理过程中,如果还有其他字符剩下,那么它将会被忽略。

方法 - 创建一个强密码建议者

  • 方法 1 - 创建强密码建议环境

  • 方法 2 - 检查密码是强、弱还是中等

  • 方法三 - 检查密码是否符合条件

创建一个强密码建议环境

在此 C++ 构建代码中,系统将检查输入数据(密码)的强度。它将扫描输入以查找理想密码的所有提到的标准。如果所有条件都匹配,那么它就是一个理想的密码。否则,输入中缺少任何字符,它将返回一些随机生成的密码。

Example 1

的中文翻译为:

示例 1

#include <bits/stdc++.h>
using namespace std;
string add_more_char(string str, int need){
   int pos = 0;
   string low_case = "abcdefghijklmno";
   for (int a = 0; a < need; a++) {
      pos = rand() % str.length();
      str.insert(pos, 1, low_case[rand() % 26]);
   }
   return str;
}
string suggester(int m, int o, int a, int d, string str) {
   string num = "0123456789";
   string low_case = "abcdefghijklmno";
   string up_case = "ABCDEFGHIJKLMNO";
   string spl_char = "@#$_()!*&%#+-=.`";
   int pos = 0;
   if (m == 0) {
      pos = rand() % str.length();
      str.insert(pos, 1, low_case[rand() % 26]);
   }
   if (o == 0) {
      pos = rand() % str.length();
      str.insert(pos, 1, up_case[rand() % 26]);
   }
   if (a == 0) {
      pos = rand() % str.length();
      str.insert(pos, 1, num[rand() % 10]);
   }
   if (d == 0) {
      pos = rand() % str.length();
      str.insert(pos, 1, spl_char[rand() % 7]);
   }
   return str;
}
void generate_password(int n, string p){
   int l = 0, u = 0, d = 0, s = 0, need = 0;
   string suggest;
   for (int j = 0; j < n; j++) {
      if (p[j] >= 97 && p[j] <= 122)
         l = 1;
      else if (p[j] >= 65 && p[j] <= 90)
         u = 1;
      else if (p[j] >= 48 && p[j] <= 57)
         d = 1;
      else
         s = 1;
   }
   if ((l + u + d + s) == 4) {
      cout << "Hurra! Your Passcode Is Strong, Go Ahead!" << endl;
      return;
   }
   else
   cout << "Suggested password As Per The Input. Pick One For You! " << endl;
   for (int i = 0; i < 10; i++) {
      suggest = suggester(l, u, d, s, p);
      need = 8 - suggest.length();
      if (need > 0)
         suggest = add_more_char(suggest, need);
      cout << suggest << endl;
   }
}
int main(){
   string input_string = "abonirudra@1607";
   srand(time(NULL));
   generate_password(input_string.length(), input_string);
   return 0;
}
登录后复制

输出

Suggested password As Per The Input. Pick One For You! 
abonirudGra@1607
abConirudra@1607
abonirudra@1E607
abonirudra@16A07
abonirudra@160L7
abNonirudra@1607
aNbonirudra@1607
abonirDudra@1607
aboniruFdra@1607
abonirNudra@1607
登录后复制

检查密码强度是否强、弱或中等

根据上述算法和C++构建代码;编码字符串检查输入强度。当满足所有条件时,整个方法返回“Strong”作为输出。如果仅满足前三个步骤并且密码长度至少为八个字符,则它将返回“中等”。

Example 2

的中文翻译为:

示例2

#include <bits/stdc++.h>
using namespace std;
void printStrongNess(string& input) {
   int n = input.length();
   bool hasLower = false, hasUpper = false;
   bool hasDigit = false, specialChar = false;
   string normalChars = "abcdefghijklmnopqrstu"
   "vwxyzABCDEFGHIJKL023456789 ";
   for (int i = 0; i < n; i++) {
      if (islower(input[i]))
         hasLower = true;
      if (isupper(input[i]))
         hasUpper = true;
      if (isdigit(input[i]))
         hasDigit = true;
      size_t special = input.find_first_not_of(normalChars);
      if (special != string::npos)
         specialChar = true;
   }
   cout << "Strength of password:-";
   if (hasLower && hasUpper && hasDigit &&
       specialChar && (n >= 8))
   cout << "Strong" << endl;
      else if ((hasLower || hasUpper) &&
   specialChar && (n >= 6))
       cout << "Moderate" << endl;
   else
      cout << "Weak" << endl;
}
int main(){
   string input = "Abonirudra@22052023";
   printStrongNess(input);
   return 0;
}
登录后复制

输出

Strength of password:-Strong
登录后复制

根据条件检查您的密码

在这段代码中,我们将对特定密码进行验证操作。以下是具体的步骤 -

  • 接受用户的输入。

  • 现在将检查用户输入的密码组合。

  • 密码分为强、中、弱三种。

  • 如果所有条件都为真,则它将是一个强密码。

  • 其他情况下,中等或弱。

Example 3

的中文翻译为:

示例 3

#include <bits/stdc++.h>
using namespace std;
void checkpassword(string& password) {
   int n = password.length();
   bool hasLower = false, hasUpper = false, hasDigit = false;
   for (int i = 0; i < n; i++) {
      if (islower(password[i]))
         hasLower = true;
      if (isupper(password[i]))
         hasUpper = true;
      if (isdigit(password[i]))
          hasDigit = true;
   }
   cout << "Strength of password you have entered as per the input :-";
   if ( hasUpper && hasDigit && hasLower && (n >= 6))
      cout << "Strong" << endl;
   else if ((hasLower || hasUpper) && hasDigit && (n >=6))
      cout << "Moderate" << endl;
   else
      cout << "Weak" << endl;
}
int main() {
   cout << "Welcome To The Password Tester! Let's Check Your Password. " << endl;
   cout << "Let's consider the average length of an ideal strong password should be more than 6 character " << endl;
   cout << "Please enter your desired password with :- " << endl;
   cout << " * at least one upper case letter and lower case letter " << endl;
   cout << " * and also need to have at least one digit " << endl; string password;
   cout <<"Enter your monermoto password"<<endl;
   getline(cin,password);
   checkpassword(password);
   return 0;
}
登录后复制

输出

Welcome To The Password Tester! Let's Check Your Password. 
Let's consider the average length of an ideal strong password should be more than 6 character 
Please enter your desired password with :- 
 * at least one upper case letter and lower case letter 
 * and also need to have at least one digit 
Enter your monermoto password
Strength of password you have entered as per the input :-Weak
登录后复制

结论

从本文中,我们了解了如何使用 C++ 创建密码建议器环境,然后在该特定平台上如何使用一些标签(强、中等、弱)评估密码质量。

以上是强密码建议程序的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

C语言数据结构:树和图的数据表示与操作 C语言数据结构:树和图的数据表示与操作 Apr 04, 2025 am 11:18 AM

C语言数据结构:树和图的数据表示与操作树是一个层次结构的数据结构由节点组成,每个节点包含一个数据元素和指向其子节点的指针二叉树是一种特殊类型的树,其中每个节点最多有两个子节点数据表示structTreeNode{intdata;structTreeNode*left;structTreeNode*right;};操作创建树遍历树(先序、中序、后序)搜索树插入节点删除节点图是一个集合的数据结构,其中的元素是顶点,它们通过边连接在一起边可以是带权或无权的数据表示邻

C语言文件操作难题的幕后真相 C语言文件操作难题的幕后真相 Apr 04, 2025 am 11:24 AM

文件操作难题的真相:文件打开失败:权限不足、路径错误、文件被占用。数据写入失败:缓冲区已满、文件不可写、磁盘空间不足。其他常见问题:文件遍历缓慢、文本文件编码不正确、二进制文件读取错误。

c上标3下标5怎么算 c上标3下标5算法教程 c上标3下标5怎么算 c上标3下标5算法教程 Apr 03, 2025 pm 10:33 PM

C35 的计算本质上是组合数学,代表从 5 个元素中选择 3 个的组合数,其计算公式为 C53 = 5! / (3! * 2!),可通过循环避免直接计算阶乘以提高效率和避免溢出。另外,理解组合的本质和掌握高效的计算方法对于解决概率统计、密码学、算法设计等领域的许多问题至关重要。

c语言函数的基本要求有哪些 c语言函数的基本要求有哪些 Apr 03, 2025 pm 10:06 PM

C语言函数是代码模块化和程序搭建的基础。它们由声明(函数头)和定义(函数体)组成。C语言默认使用值传递参数,但也可使用地址传递修改外部变量。函数可以有返回值或无返回值,返回值类型必须与声明一致。函数命名应清晰易懂,使用驼峰或下划线命名法。遵循单一职责原则,保持函数简洁性,以提高可维护性和可读性。

c语言函数名定义 c语言函数名定义 Apr 03, 2025 pm 10:03 PM

C语言函数名定义包括:返回值类型、函数名、参数列表和函数体。函数名应清晰、简洁、统一风格,避免与关键字冲突。函数名具有作用域,可在声明后使用。函数指针允许将函数作为参数传递或赋值。常见错误包括命名冲突、参数类型不匹配和未声明的函数。性能优化重点在函数设计和实现上,而清晰、易读的代码至关重要。

c语言函数的概念 c语言函数的概念 Apr 03, 2025 pm 10:09 PM

C语言函数是可重复利用的代码块,它接收输入,执行操作,返回结果,可将代码模块化提高可复用性,降低复杂度。函数内部机制包含参数传递、函数执行、返回值,整个过程涉及优化如函数内联。编写好的函数遵循单一职责原则、参数数量少、命名规范、错误处理。指针与函数结合能实现更强大的功能,如修改外部变量值。函数指针将函数作为参数传递或存储地址,用于实现动态调用函数。理解函数特性和技巧是编写高效、可维护、易理解的C语言程序的关键。

distinct函数用法 distance函数c  用法教程 distinct函数用法 distance函数c 用法教程 Apr 03, 2025 pm 10:27 PM

std::unique 去除容器中的相邻重复元素,并将它们移到末尾,返回指向第一个重复元素的迭代器。std::distance 计算两个迭代器之间的距离,即它们指向的元素个数。这两个函数对于优化代码和提升效率很有用,但也需要注意一些陷阱,例如:std::unique 只处理相邻的重复元素。std::distance 在处理非随机访问迭代器时效率较低。通过掌握这些特性和最佳实践,你可以充分发挥这两个函数的威力。

C语言多线程编程:新手指南与疑难解答 C语言多线程编程:新手指南与疑难解答 Apr 04, 2025 am 10:15 AM

C语言多线程编程指南:创建线程:使用pthread_create()函数,指定线程ID、属性和线程函数。线程同步:通过互斥锁、信号量和条件变量防止数据竞争。实战案例:使用多线程计算斐波那契数,将任务分配给多个线程并同步结果。疑难解答:解决程序崩溃、线程停止响应和性能瓶颈等问题。

See all articles