利用Linux随机函数生成一定位数的密钥

利用Linux随机函数生成一定位数的密钥

从特殊设备 /dev/urandom 或者 /dev/random中取得一定长度的随机数,使用了crypto库中的base64编码将其转化为字符串。

/dev/random 随机性比 /dev/urandom 更高,但是可能会因为等待系统中断而阻塞,在随机性要求不那么高的时候,/dev/urandom 是更好的选择

include <unistd.h>

include <stdio.h>

include <string.h>

include <fcntl.h>

include <openssl/evp.h>

void key_gen()
{
int fd;
char buff[12];
char key[17];
memset(buff, 0, sizeof(buff));
memset(key, 0, sizeof(key));

fd = open("/dev/urandom", O_RDONLY);
read(fd, buff, 12);
close(fd);

EVP_EncodeBlock(key, buff ,12);
printf("KEY GENERRATION: %s\n", key);

return;
}

int main()
{
key_gen();
return 0;
}

posted @ 2020-03-10 22:14  Xsuns  阅读(360)  评论(0)    收藏  举报