没啥好说的 上程序,目前只写了1 2 3 12位字典生成,如需其他位数,可以自行补充。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
// 密码字符数组
char str[17] = "0123456789ABCDEF";
// char str[11] = "0123456789";
// printf("len=%d\n", strlen(str));
// 密码位数
int num = 3;
// 下标
int arr[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
if(1 == num)
{
for(arr[0] = 0; arr[0] < strlen(str); arr[0]++)
{
printf("0x%c, ", str[arr[0]]);
}
}
else if(2 == num)
{
for(arr[0] = 0; arr[0] < strlen(str); arr[0]++)
{
for(arr[1] = 0; arr[1] < strlen(str); arr[1]++)
{
printf("0x%c%c, ", str[arr[0]], str[arr[1]]);
}
}
}
else if(3 == num)
{
for(arr[0] = 0; arr[0] < strlen(str); arr[0]++)
{
for(arr[1] = 0; arr[1] < strlen(str); arr[1]++)
{
for(arr[2] = 0; arr[2] < strlen(str); arr[2]++)
{
printf("0x%c%c%c, ", str[arr[0]], str[arr[1]], str[arr[2]]);
// printf("%c%c%c, ", str[arr[0]], str[arr[1]], str[arr[2]]);
}
}
}
}
else if(12 == num)
{
for(arr[0] = 0; arr[0] < strlen(str); arr[0]++)
{
for(arr[1] = 0; arr[1] < strlen(str); arr[1]++)
{
for(arr[2] = 0; arr[2] < strlen(str); arr[2]++)
{
for(arr[3] = 0; arr[3] < strlen(str); arr[3]++)
{
for(arr[4] = 0; arr[4] < strlen(str); arr[4]++)
{
for(arr[5] = 0; arr[5] < strlen(str); arr[5]++)
{
for(arr[6] = 0; arr[6] < strlen(str); arr[6]++)
{
for(arr[7] = 0; arr[7] < strlen(str); arr[7]++)
{
for(arr[8] = 0; arr[8] < strlen(str); arr[8]++)
{
for(arr[9] = 0; arr[9] < strlen(str); arr[9]++)
{
for(arr[10] = 0; arr[10] < strlen(str); arr[10]++)
{
for(arr[11] = 0; arr[11] < strlen(str); arr[11]++)
{
printf("0x%c%c%c%c%c%c%c%c%c%c%c%c, ",
str[arr[0]], str[arr[1]],
str[arr[2]], str[arr[3]],
str[arr[4]], str[arr[5]],
str[arr[6]], str[arr[7]],
str[arr[8]], str[arr[9]],
str[arr[10]], str[arr[11]]);
}
}
}
}
}
}
}
}
}
}
}
}
}
return 0;
}效果如下:

















