编程论坛 - 一个单纯的编程学习交流论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

界面工厂编程视频教程广告联系qq1031180668广告位
查看: 441|回复: 3

c语言实现6位密码随机生成器

[复制链接]
  • ta_mind
    擦汗
    2016-3-2 13:17
  • classn_01: 5 classn_02

    [LV.2]偶尔看看I

    629

    主题

    639

    帖子

    708

    积分

    高级会员

    Rank: 4

    积分
    708
    发表于 2016-10-19 00:44:51 | 显示全部楼层 |阅读模式
    在我们注册某些网站的时候,很多需要提供手机号,用来接收验证码来完成注册。我们知道,每次的验证码都是随机的,那么这里面的验证码到底是如何随机生成的呢?今天,我就给大家展示一种6位随机密码生成的例子。


    [C] syntaxhighlighter_viewsource syntaxhighlighter_copycode
    #include<stdio.h>
    #include<time.h>
    #include<windows.h>
    char code[10];
    int flag;
    void input();
    void output();
    void CodeGen();
    void main()
    {
    while(1)
    {
    input();
    output();
    }
    }
    void input()
    {
    printf("To continue,按1继续,按0退出\n");
    scanf("%d",&flag);
    }
    void output()
    {
    if(flag==1)
    {CodeGen();
    printf("the random code for you is:%s\n",code);
    }
    else
    printf("thanks for using!\n");
    }
    void CodeGen()
    {
    int i,mark;
    srand(time(NULL));//初始化时间种子
    for(i=0;i<6;i++)//循环6次,生成6个字符密码
    {mark=rand()%36;//产生从0到35共36个随机数,用来区分代表10个阿拉伯数字和26个小写英文字母
    if(mark>=0&&mark<=9)
    code[i]=mark+48;//如果随机数在0到9之间,则密码转化为字符型的0到9
    else
    code[i]=mark+87;//a的ascII码为97,比如随机数是10,则代表产生的字符是a;随机数是11,则代表产生的字符是b
    }
    code[i]='/0';//字符串结束符
    }

    程序的核心部分我已经做了详细注释,不再多说。主要值得一提的是该算法的核心在于srand和rand()随机数生成算法。srand和rand函数配合产生伪随机数列。srand函数在前,作用是初始化时间种子,为rand函数产生随机数提供种子。srand(unsigned T)通过参数T改变系统提供的种子值,从而使每次产生的种子值不同,这样rand函数调用产生的伪随机数就不同。通常情况下,我们可以使用系统时间来改变种子值,srand(time(NULL)),为rand函数提供不同的种子,从而产生不同的随机数。至于rand函数的用法,简单来讲就是,rand()%M,M是正整数,表示可能随机产生0到M-1种随机数值。






    上一篇:文件进度读取并打印
    下一篇:全局变量、局部变量、静态全局变量、静态局部变量在内...
  • ta_mind
    擦汗
    2017-7-10 11:16
  • classn_01: 168 classn_02

    [LV.7]常住居民III

    24

    主题

    239

    帖子

    625

    积分

    高级会员

    Rank: 4

    积分
    625
    发表于 2016-10-20 00:52:21 | 显示全部楼层
    学习了
    回复

    使用道具 举报

  • ta_mind
    开心
    2016-10-24 07:35
  • classn_01: 1 classn_02

    [LV.1]初来乍到

    1

    主题

    71

    帖子

    115

    积分

    注册会员

    Rank: 2

    积分
    115
    发表于 2016-10-24 07:46:41 | 显示全部楼层
    非常棒的介绍,非常实用

    classn_11

    0

    主题

    94

    帖子

    108

    积分

    注册会员

    Rank: 2

    积分
    108
    发表于 2017-7-5 23:13:11 | 显示全部楼层
    RAND也不是真正的随机
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    手机版|Archiver|小黑屋|sitemap|编程论坛 - 一个单纯的编程学习交流论坛 ( 豫ICP备15032706号-2 )

    GMT+8, 2017-8-22 09:49 , Processed in 0.261932 second(s), 34 queries .

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表