首页
社区
课程
招聘
[原创]随机字符串生成函数
发表于: 2009-5-18 22:59 5649

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

2009-5-18 22:59
5649

写着玩的,见笑
#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;
}


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 7
支持
分享
最新回复 (6)
雪    币: 399
活跃值: (38)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
2
个人比较喜欢用rdtsc来搞
2009-5-19 10:30
0
雪    币: 1450
活跃值: (35)
能力值: (RANK:680 )
在线值:
发帖
回帖
粉丝
3
为了生成种子还弄进了winmm库, 不值得~~
2009-5-19 10:51
0
雪    币: 474
活跃值: (96)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
谢谢楼主,好东西
2009-5-19 12:18
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
能不能告诉我这个函数有什么用
2009-5-19 22:01
0
雪    币: 983
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
根据随机数产生字母吧 如果将随机数控制在0-127之内 直接在buffer中放入ASCII码 是不是会简单些呢 而且可产生的字符也会多一些啊(当然 也可以将数值控制在32-126之间 这样产生的随机字符串的效果会更好些)
个人愚见 说错勿恼
2009-5-21 13:23
0
雪    币: 367
活跃值: (20)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
7
感觉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;
}
2009-5-22 11:36
0
游客
登录 | 注册 方可回帖
返回
//