옵션 |
|
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX_CNT 11
#define BUF_SIZE 12
#define FROM 32
#define UNTIL 123 +1 - FROM
int main()
{
char cNum[BUF_SIZE];
int iCnt;
int Filter;
srand((unsigned)time(NULL));
for(int cNt =0; cNt < MAX_CNT - 1; ++cNt)
{
for(iCnt = 0; iCnt < MAX_CNT; )
{
// 까지~ 부터~
Filter = rand()%UNTIL + FROM; //rand()%(m -1 + n) + n
if( 48 <= Filter && Filter <= 57 ) // 숫자 이리왕
{
cNum[iCnt] = Filter;
++iCnt;
}
else if( 97 <= Filter && Filter <= 122 ) // 소문자 이리왕
{
cNum[iCnt] = Filter;
++iCnt;
}
else if( 65 <= Filter && Filter <= 90 ) // 대문자 이리왕
{
cNum[iCnt] = Filter;
++iCnt;
}
else
{ continue; }
}
cNum[iCnt] = 0;
printf("%s \n", cNum);
}
return 0;
}
sha256 해쉬 알고리즘을 이용한 패스워드 인증 Win32 프로그램을 짰는데,
잘되나 테스트 해볼 용도로 랜덤으로 문자열 생성해주는 함수를 짜봤습니다.
저 문자열을 hash 해서 사전에 지정해놓은 해쉬값과 strcmp 해서 틀린값만 카운트를 하면 되는데...
이게 한 10만번 반복문 정도까진 제가 원하는 대로 나오는데, 한 1000만번 정도 돌려주니까
같은 문자열이 계속 생성되는 문제가 생기는데, 좀 알아보니 rand()함수 자체가 시드 쪽 문제때문에 그런 경우가 있을수 있다~ 라긴 하던데;; 거의 100만~1000만번 정도에서는 어지간하면 깨지네요; 혹시 보완/수정해야할 부분이 있나 체크좀 해주시면 감사하겠습니다 ㅠㅠ
제가 잘못짠건지; rand()가 문제인지 에효...