首页
论坛
课程
招聘
雪    币: 235
活跃值: 活跃值 (10)
能力值: ( LV12,RANK:460 )
在线值:
发帖
回帖
粉丝

[原创]随机字符串生成函数

2009-5-18 22:59 3820

[原创]随机字符串生成函数

2009-5-18 22:59
3820
写着玩的,见笑
#include "stdafx.h"
#include <stdio.h>
#include "windows.h"
#pragma comment(lib,"winmm.lib")

int main(int argc, char* argv[])
{
        int RanNum;
        int n1,n2;
        int count;
        char *buffer;
        char ch;
        //产生种子
        srand((unsigned(timeGetTime())));
        RanNum=rand();
        n1=RanNum%10;
        printf("随机数字%d\n",n1);
        n1++;
        buffer=(char *)VirtualAlloc(NULL,2*n1,MEM_COMMIT,PAGE_EXECUTE_READWRITE);
        memset((void *)buffer,0,2*n1);
        for (count=0;count<(2*n1-1);count++)
        {
                RanNum=rand();
                n2=RanNum%52;
                printf("随机数字%d\n",n2);
                if (n2>=26)
                {
                        ch=n2&0x0F;
                        ch+=0x47;  //'a'------'z'
                }
                else
                {
                        ch=n2&0x0F;
                        ch+=0x41;  //'A'-----'Z'
                }
                buffer[count]=ch;
               
        }
        printf("生成随机字符串:%s\n",buffer);
        VirtualFree(buffer,2*n1,MEM_DECOMMIT);
        return 0;
}

HWS计划·2020安全精英夏令营来了!我们在华为松山湖欧洲小镇等你

最新回复 (6)
雪    币: 310
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
stalker 活跃值 8 2009-5-19 10:30
2
0
个人比较喜欢用rdtsc来搞
雪    币: 1224
能力值: (RANK:680 )
在线值:
发帖
回帖
粉丝
jackozoo 活跃值 14 2009-5-19 10:51
3
0
为了生成种子还弄进了winmm库, 不值得~~
雪    币: 469
活跃值: 活跃值 (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
xianboabcd 活跃值 2009-5-19 12:18
4
0
谢谢楼主,好东西
雪    币: 202
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
WO张小凡 活跃值 2009-5-19 22:01
5
0
能不能告诉我这个函数有什么用
雪    币: 983
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wanynal 活跃值 2009-5-21 13:23
6
0
根据随机数产生字母吧 如果将随机数控制在0-127之内 直接在buffer中放入ASCII码 是不是会简单些呢 而且可产生的字符也会多一些啊(当然 也可以将数值控制在32-126之间 这样产生的随机字符串的效果会更好些)
个人愚见 说错勿恼
雪    币: 325
活跃值: 活跃值 (10)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
morning 活跃值 1 2009-5-22 11:36
7
0
感觉LZ的代码比较复杂啊

#include <stdio.h>
#include <stdlib.h>
#include <memory.h>

char* GetRndStr(unsigned int nLen)
{
        char* psz=NULL;
        long lrdtsc;
        psz=(char*)malloc(nLen+1);
        if (psz)
        {
                psz[nLen]=0;
                __asm RDTSC;
                __asm mov lrdtsc,eax;
                while(nLen--)
                {
                        psz[nLen]=((lrdtsc>>(8*(nLen%4)))&0xff)%26+'a';
                }
        }
        return psz;
}

int main(int argc, char* argv[])
{
        char* psz=NULL;
        psz=GetRndStr(10);
        if (psz)
        {
                printf("生成随机字符串:%s\n",psz);
                free(psz);
        }
        return 0;
}
游客
登录 | 注册 方可回帖
返回