利用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  阅读(351)  评论(0)    收藏  举报