C语言实现密码的设置及验证

原创 2015年11月21日 20:53:53
#include <stdio.h>




/*定义密码输入函数*/
void password_set(unsigned int *passwordArrary)
{
 int enter_counter; /*定义密码输入计数器*/




 /*for循环实现密码的输入*/
 printf("请输入6位数字密码\n");
 for (enter_counter = 0; enter_counter < 6; enter_counter++)
 {
  scanf_s("%d", &passwordArrary[enter_counter]);
 }
}




/*定义check_rule函数检查输入密码是否符合密码设置规则*/
int check_rule(unsigned int *passwordArrary)
{
 int checkRule_flag;
 int checkRule_counter;




 checkRule_flag = 0;




 for (checkRule_counter = 1; checkRule_counter <= 6; checkRule_counter++)
 {
  if ((*passwordArrary) > 0 && (*passwordArrary) < 10)
  {
   checkRule_flag++;
   passwordArrary++;
  }
  else
  {
   passwordArrary++;
  }
 }




 if (checkRule_flag == 6)
 {
  return 1;
 }
 else
 {
  return 0;
 }
}




/*定义一个密码校验函数*/
int password_value_check(unsigned int *passwordArrary)
{
 unsigned int password_check[6]; /*存放再次输入的密码值*/
 int passwordCheckEnter_counter; /*循环输入密码*/
 int passwordCheck_counter; /*校验次数计数器*/
 int passwordCheck_flag; /*校验标志位*/




 passwordCheck_counter = 0;
 passwordCheck_flag = 0;




 /*再次输入密码并存如校对数组*/
 printf("请再次输入刚才设置的密码以便进行校验!\n");
 for (passwordCheckEnter_counter = 0; passwordCheckEnter_counter < 6; passwordCheckEnter_counter++)
 {
  scanf_s("%d", &password_check[passwordCheckEnter_counter]);
 }




 while (passwordCheck_counter < 6)
 {
  if ((*passwordArrary) == password_check[passwordCheck_counter]) /*判断两次密码是否相同*/
  {
   passwordCheck_flag++;
   passwordArrary++;
   passwordCheck_counter++;
  }
  else
  {
   passwordArrary++;
   passwordCheck_counter++;
  }
 }




 if (passwordCheck_flag == 6) /*判断标志位返回相应值*/
 {
  return 1;
 }
 else
 {
  return 0;
 }
}




int main()
{
 unsigned int passwordArrary[6]; /*定义一个存放密码的数组*/
 unsigned int *password_set_return;
 int check_rule_flag; /*定义密码规则检查返回标识位*/
 int check_value_flag; /*设定密码校验标志位*/
 int set_counter; /*定义密码设置计数器*/
 int check_counter; /*定义密码校验计数器*/




 set_counter = 1;
 check_counter = 1;




 password_set(passwordArrary);




 /*利用check_rule函数检查输入的函数是否符合密码设置规则*/
 check_rule_flag = check_rule(passwordArrary);
 while (check_rule_flag == 0 && set_counter <= 5)
 {
  set_counter++;
  printf("您输入的密码不符合规格,请重新输入6位0~9之间的密码\n");
  password_set(passwordArrary);
  check_rule_flag = check_rule(passwordArrary);
 }
 if (set_counter > 5)
 {
  printf("密码设置已经超过规定次数!\n");
 }
 else
 {
  check_value_flag = password_value_check(passwordArrary);
  while (check_value_flag == 0 && check_counter <= 5)
  {
   check_counter++;
   check_value_flag = password_value_check(passwordArrary);
  }
  if (check_counter > 5)
  {
   printf("输入错误次数超过5次,登陆失败!\n");
  }
  else
  {
   printf("密码校验成功!\n");
  }
 }




 return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

redis添加验证密码及C语言API hiredis配置

最近在测试redis,发现按照网上教程修改/usr/local/redis/conf/redis.conf后,redis没办法验证密码 (error) ERR Client sent AUTH, bu...

playfair密码 C语言实现

这个学期学校开了应用密码学的课,老师布置的一个作业就是挑选一种置换或者代换密码然后用C语言实现。刚开始拿到组长分配的任务,觉得playfair很简单,完全可以一个小时搞定,可是真正动手去写,才发现这个...

Linux下用C语言实现简单的密码登录

通常,我们在切换计算机用户时,会需要输入密码。在Linux下,密码不可见;在Windows下,密码显示的则是··········的一串小黑点,或者登陆某一网站账号时密码为********的一串星号,其...

[心得]C语言中实现密码输入 回显星号*

C语言为密码输入提供了一函数getpass(); #include #include int main() { char *password; password = getpass...

AES密码算法C语言实现

  • 2017-09-13 10:26
  • 398KB
  • 下载

序列密码的C语言实现

  • 2014-12-08 11:40
  • 173KB
  • 下载

Playfair密码(波雷费密码)的C语言实现

#include #include #include #include #define ENCRYPT 1 #define DECRYPT -1 // See in: The Ce...

sha-1密码算法C语言实现

C语言高级技术之--windows密码破解

众所周知,如果自己忘了系统密码,就只能重装系统或者去买工具软件进行软件的破解。但很多都局限于应用工具,那我们学C的能自己创造一个工具吗?  回答当然是Yes,  C 和汇编是程序开发中的王者,无所不能...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)