如何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变动一次分割符数组

    ...

  }

 

 

}

 

完毕

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM