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...

椭圆曲线密码的C语言设计与实现

基于TOM算法库的ECC加密算法的C语言设计与实现 研究生 徐立均 内容: 一、源代码下载 二、ECC算法的设计思想三、椭圆曲线参数的选取和基点的确定 四、椭圆曲线的点加和纯量乘法 五、加密文件的读入...

【密码学】C语言实现AES核心步骤

AES介绍高级加密标准在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。...

PAT Basic 1067. 试密码(20)(C语言实现)

题目 当你试图登录某个系统却忘了密码时,系统一般只会允许你尝试有限多次,当超出允许次数时,账号就会被锁死。本题就请你实现这个小功能。 输入格式: 输入在第一行给出一个密码(长度不超过20的、不包含空...

比特币系统采用的公钥密码学方案和ECDSA签名算法介绍——第二部分:代码实现(C语言)

依赖库:openssl-1.01h ,参考文档:http://openssl.sourcearchive.com/ 为降低代码复杂度,本文借助了openssl库来实现大整数(BIGNUM)的运算...
  • taifei
  • taifei
  • 2017年06月13日 09:15
  • 363

C语言简单实现现代密码学rabin签名

#include #include #include    #include   #include #include #include #define max 10 ...

C语言实现的密码输入功能

#include #include #include #include int main() { int n,p; char ch,acnt[256],pw...

C语言实现密码输入显示星号 VS2010 亲测通过 功能加强版

// 登录界面   第一次可设置密码   之后的登录要输入密码进行验证    密码长度8~12 //长度过长会截断取前12位,不足8位会提示出错  要求重新输入 //密码中必须有 字母数字和特...

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

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

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

通常,我们在切换计算机用户时,会需要输入密码。在Linux下,密码不可见;在Windows下,密码显示的则是··········的一串小黑点,或者登陆某一网站账号时密码为********的一串星号,其...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C语言实现密码的设置及验证
举报原因:
原因补充:

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