利用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;
}

浙公网安备 33010602011771号