|
|
|
伪随机数生成及在VC++中的实现(二) |
|
|
作者:未知 来源:天极网 加入时间:2005-10-16 人气:217 |
基于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);
}
程序运行时,由于每一次点击"产生随机校验码"的系统时间不同,生成随机数的种子就不一样,因此产生的随机数也是不一样的,从而保证了校验码生成的随机性。
利用ImagePassword工具产生随机密码
ImagePassword提供一个可选择的图形阵列,通过随机改变图形阵列中的阵点图形来产生随机密码。当随机点击图象阵列中的图象阵点,该阵点中的图象发生变化。
ImagePassword产生的密码的随机性依赖于用户对图象阵列中阵点图象的随机选择,一般来说用户在图象阵列中随机点击鼠标的次数越多,最后产生的密码的随机性越强。
结束语
伪随机数在不同的软件系统中都得到了很广泛的应用,如何选择随机数生成种子使得生成的伪随机数性能更佳是软件设计者追求的目标之一。本文提到了利用系统时间作为种子参数在一定条件下可以满足软件的随机性需要。利用所产生的随机数在游戏编程,如扑克类游戏中的随机发牌,俄罗斯方块的随机生成等等其他应用中都起到很重要的作用。 
|
|
相关文章:
相关软件:
|
|
|