#include <stdio.h> #include <stdint.h> #include <openssl/rand.h> #include <stdlib.h> #include <math.h> #include <strings.h> static void turn_random_tid_size(void *id) { uint32_t *ar=(uint32_t*)id; if(!RAND_pseudo_bytes((unsigned char *)ar,12)) { size_t i; for(i=0;i<3;++i) { ar[i] = (uint32_t)random(); } } } int main(){ uint8_t id[12]; bzero(&id,12); turn_random_tid_size(id); uint16_t temp = 0; for (int i=0;i<12;i++){ temp = temp + ((int )pow(256,i))*id[i]; } printf("temp:%u",temp); return 0; }
编译:
gcc demo.c -lm -lcrypto -o demo
在coturn的ns_turn_msg.c中函数turn_random_tid_size()的作用是对传入的参数id进行12byte空间赋予随机值!
如果第一此使用函数RAND_pseudo_bytes()赋了0随机值,则会使用random()函数对id所指的12byte空间再此进行三次随机赋值,每次对4byte空间赋值!