如何STM32生成随机唯一串码

如何STM32生成随机唯一串码

 

    刚刚在做项目时,遇到一个问题,就是 如何随机生成一个唯一串码?

原理:1、动利用srand(int),  rand(),给定一个随机源seed, 然后在main里这个seed在不断变化,并且每次在程序一开始seed的值要不一样,。这样保证每次随机的数不一样。

   2、再建立一个分割字符数组,并且这个数组里的值时刻在变化,这样为生成的唯一码加上了二重保险

   3、生成的唯一码格式是:  [STM32设备ID]@[随机数1][分割符1][随机数2][分割符2][随机数3][分割符3][随机数4][分割符4][随机数5][分割符5][随机数6][分割符6][随机数7][分割符7][随机数8][分割符8]

 

代码结构:

int seed;

char * make_uuid(void)

{

  /*

    用rand()生成8个随机数,

    取8个分割字符

  */

  组装唯一串码

}

 

void change_seperate(void)

{

  //按照一定的算法对分割字符数组里的值,重新排列

 

}

 

 

int main(void)

{

 

  ...

  ....

  seed = [从FLASH里取值] //这个值保证每一次开机都不一样

  srand(seed);

 

  while(1)

  {  

    ...

    //每100 ms变动一次分割符数组

    ...

  }

 

 

}

 

完毕

 

posted on 2020-05-18 16:13  一个大菜B  阅读(1328)  评论(0编辑  收藏  举报