C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 如何使用STM32 MCU生成REAL随机数?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用keil microvision IDE中的STM32F103E arm cortex-m3 MCU开展一个项目.
我需要为某些目的生成随机数,但我不想使用标准c库生成的伪随机数,所以我需要一种使用硬件功能生成REAL随机数的方法,但我不知道如何我能做到.
任何的想法? (我是一软件工程师而非电子专业人员,所以请说明一下:p)

@L_675_9@

正如所指出的,该芯片没有硬件RNG.

但你可以自己动手.通常的方法是测量INDEPENDENT时钟之间的抖动.独立意味着两个时钟由不同的christal或RC振荡器支持,而不是来自相同的.

我会用:

>从系统时钟(MHz范围)派生的SysTick定时器/计数器
>其中一个kHz范围的RC振荡器

在kHz范围RC振荡器上设置一个计数器,每秒几次给你一个中断.在中断处理程序中,您读取SysTick计数器的当前值.无论SysTick是否用于其他目的(调度),低5位都是不可预测的.

为了获得随机数,请使用普通的伪RNG.使用上面收集的熵不可预测地改变伪RNG的内部状态.对于密钥生成,不要一次读取所有位,但允许发生几个突变.

对此的攻击是显而易见的:如果攻击者可以测量或控制高达MHz精度的kHz范围RC振荡器,则随机性消失.如果您担心这一点,请使用智能卡或其他安全协处理器.

大佬总结

以上是大佬教程为你收集整理的c – 如何使用STM32 MCU生成REAL随机数?全部内容,希望文章能够帮你解决c – 如何使用STM32 MCU生成REAL随机数?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。