用C语言创建AES密钥

用C语言创建AES密钥,c,encryption,C,Encryption,如何使用C创建AES密钥?我喜欢使用C的rand函数创建一个伪随机128位密钥。我喜欢为rand函数提供一个特定的长数字。我知道这是不安全的,我知道我每次都会得到相同的“随机”数 这是我目前的代码: #include <stdio.h> #include <time.h> int main(void) { time_t epoch = 1427863786; printf("%d\n", rand((long)epoch)); } #包括 #包括 内部

如何使用C创建AES密钥?我喜欢使用C的rand函数创建一个伪随机128位密钥。我喜欢为rand函数提供一个特定的长数字。我知道这是不安全的,我知道我每次都会得到相同的“随机”数

这是我目前的代码:

#include <stdio.h>
#include <time.h>

int main(void)
{
    time_t epoch = 1427863786;
    printf("%d\n", rand((long)epoch));
}
#包括
#包括
内部主(空)
{
时间=1427863786;
printf(“%d\n”,rand((长)历元));
}

我知道我想使用随机数创建128位密钥。怎么用?谢谢

您甚至可以尝试类似的方法(假设不安全的事实不会困扰您):

无符号字符buf[16];
int i;
srand(时间(空));
对于(i=0;i

由于
rand
返回
int
(典型大小为4个字节),我怀疑如何通过调用
rand

使用srand(),而不是rand()来获取16个字节的数字。我特别需要使用rand(),我知道这是不安全的,我知道每次输出相同的数字,但这正是我想要的!不,这不是你想要的
rand()
不是安全随机数据的来源。为什么不呢?这只是一个例子。我不想加密敏感密码,只想用一个示例文本来说明AES的不安全性。@moe2801:AES是安全的,只要您正确使用它。请记住,
rand()
的许多实现在低阶位上是高度周期性的。例如,LSB在0和1之间交替的情况并不少见@Daskwuff:是的,我看到刚才OP特别要求这甚至可以使用rand函数生成128位密钥吗?
unsigned char buf[16];
int i;
srand(time(NULL));
for (i = 0; i < sizeof(buf); i++) {
    buf[i] = rand() % 256;
}