AutoCAD 3DMAX C语言 Pro/E UG JAVA编程 PHP编程 Maya动画 Matlab应用 Android
Photoshop Word Excel flash VB编程 VC编程 Coreldraw SolidWorks A Designer Unity3D
 首页 > VC编程

伪随机数生成及在VC++中的实现

51自学网 2015-08-30 http://www.wanshiok.com

  基于MFC的随机校验码生成

  Web应用程序中经常要利用到随机校验码,校验码的主要作用是防止黑客利用工具软件在线破译用户登录密码,校验码、用户名、密码三者配合组成了进入Web应用系统的钥匙。在利用VC开发的基于客户机/浏览器(Client/Server)模式的应用软件系统中,为了防止非法用户入侵系统,通常也要运用随机校验码生成技术。

  本实现要用到以上介绍到的伪随机数生成技术。校验码数据将以16进制码方式显示。主要代码如下:

void CRandompasswordDlg::OnCreatekey() {
 int RanCheckNum = 0;
 char out[25]={0};
 char keytemp[5]={0};
 memset(out,0x30,18);
 srand((unsigned)timeGetTime());//产生随机数种子
 for(int i=0;i<6;i++){
  RanCheckNum = rand();//产生随机数
  _itoa(RanCheckNum,keytemp,16);//将随机数转换成16进制
  memcpy(&out[i*4],keytemp,strlen(keytemp));
 }
 out[24]=0x00;
 strcpy(m_key.GetBuffer(18),out);
 UpdateData(FALSE);
}

  运行结果如图1所示:


图1 利用伪随机数生成随机校验码

  程序运行时,由于每一次点击"产生随机校验码"的系统时间不同,生成随机数的种子就不一样,因此产生的随机数也是不一样的,从而保证了校验码生成的随机性。

  利用ImagePassword工具产生随机密码

  ImagePassword提供一个可选择的图形阵列,通过随机改变图形阵列中的阵点图形来产生随机密码。当随机点击图象阵列中的图象阵点,该阵点中的图象发生变化。其运行界面如图2所示:


图2 ImagePassword运行界面

  点击OK按钮后所产生的随机密码如图3所示:


图3 ImagePassword运行结果

  ImagePassword产生的密码的随机性依赖于用户对图象阵列中阵点图象的随机选择,一般来说用户在图象阵列中随机点击鼠标的次数越多,最后产生的密码的随机性越强。

  结束语

  伪随机数在不同的软件系统中都得到了很广泛的应用,如何选择随机数生成种子使得生成的伪随机数性能更佳是软件设计者追求的目标之一。本文提到了利用系统时间作为种子参数在一定条件下可以满足软件的随机性需要。利用所产生的随机数在游戏编程,如扑克类游戏中的随机发牌,俄罗斯方块的随机生成等等其他应用中都起到很重要的作用。

 
 
说明
:本教程来源互联网或网友上传或出版商,仅为学习研究或媒体推广,wanshiok.com不保证资料的完整性。

上一篇:MATCOM在VC++与MATLAB混合编程中的应用  下一篇:Visual&nbsp;C++常用数据类型转换详解