跳过主要内容

TRNG DA14531

DA14531

1年前

发布的Firefox200540分 6个回答
0的问题

你好,

如何呼叫trng_acquire函数对吧?

我不知道我的地址在哪里uint8_t * sram_puf。

没有任何演示应用程序或参考实现吗?

/** **************************************************************************************** * @ 短暂的使用未初始化的内存数据获得128个随机位。* * @param[out] trng_bits_ptr指向存储随机数据的缓冲区的指针。* @note它的地址必须对齐到32位。* @param[in] sram_puf指向未初始化的SRAM区域的基址。* @note它的地址必须对齐到32位。* @param[in] sram_puf_blocks要使用的16字节块的数量(最小28)。* @return状态代码  **************************************************************************************** */ uint8_t trng_acquire (uint8_t * trng_bits_ptr uint8_t * sram_puf, const uint16_t sram_puf_blocks);

1年前

PM_Dialog

嗨Firefox2005

请检查调用trng_acquire()的init_rand_seed_from_trng()。没有这样的示例,但是为什么不使用init_rand_seed_from_trng()来使用从TRNG获得的随机位初始化随机数生成器种子呢?trng_aquire()的目的是为随机函数设置种子。

谢谢,PM_Dialog

1年前

Firefox2005 40分

你好,

所以我误解了这个函数…

那样的话,我就不得不init_rand_seed_from_trng ();使用生成的随机值来初始化将srand (trng_state_val);函数并从中轮询一些随机数rand ();

但是如果我重新启动相同的固件版本,我总是得到相同的随机数。我认为这是不对的。

什么时候需要重新初始化init_rand_seed_from_trng ();一遍吗?

为什么trng_aquire(…)如果我不需要在trng.c?

谢谢大家

1年前

PM_Dialog

你好,

你得到的那个随机数是多少?你能分享一下结果吗?

谢谢,PM_Dialog

1年前

Firefox2005 40分

如果我重新加载并启动固件,我总是得到相同的输出。在我看来这是不应该的。

代码:

Void user_app_init(Void) {arch_printf("\r\n\r\nuser_app_init\r\n");//使用从TRNG获取的随机位初始化随机数生成器种子init_rand_seed_from_trng();//用trng随机数初始化标准c rand()函数//测试:通过随机数生成器循环测试随机数生成器…(uint8_t我= 0;我< 10;i++){//获得16字节随机数字的AES-128键(uint8_t i=0;我< ENC_DATA_LEN;i++){generated_challenge[i] = rand()%0xFF;} user_app_format_data("CHALLENGE", generated_challenge, 16); } app_param_update_request_timer_used = EASY_TIMER_INVALID_TIMER; // Initialize Manufacturer Specific Data mnf_data_init(); // Initialize Advertising and Scan Response Data memcpy(stored_adv_data, USER_ADVERTISE_DATA, USER_ADVERTISE_DATA_LEN); stored_adv_data_len = USER_ADVERTISE_DATA_LEN; memcpy(stored_scan_rsp_data, USER_ADVERTISE_SCAN_RESPONSE_DATA, USER_ADVERTISE_SCAN_RESPONSE_DATA_LEN); stored_scan_rsp_data_len = USER_ADVERTISE_SCAN_RESPONSE_DATA_LEN; default_app_on_init(); }

控制台输出:

user_app_init CHALLENGE d816f9d60c6c8c876abab0a74a11828fae CHALLENGE a832652ba76aa59c374db76d6cbcd48a CHALLENGE 2fd232c58303414c7a264221f0a8bc89 CHALLENGE a4e64f980420b48af8d631d962c4767e CHALLENGE470e8f5c067b89b08aa309bf495c0c48 CHALLENGE 952486692eed4f8e7bace731b5cec0d4 CHALLENGE e3b460feaf935240c3918cd46146de34

1年前

PM_Dialog

你好,

谢谢你的建议。让我检查一下提供的代码片段,我将回复给你。

谢谢,PM_Dialog

1年前

PM_Dialog

你好,

我为造成的混乱道歉。如果在da1458x_config_advanced.h中定义了CFG_TRNG宏,那么SDK会自动调用init_rand_seed_from_trng()。请检查arch_system.c文件中的第1324行。这意味着SDK将自动初始化随机数生成器种子。如果您想生成随机数,只需使用rand()函数。

谢谢,PM_Dialog