完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
正在使用 PSOC4 开发板 (CY8KIT-149),尝试让 SHA256 和 CRC 加密功能正常运行。 这两个函数都会持续返回 0。Cy_Crypto_Enable (CRYPTO) 成功了,所有其他函数都返回成功,但是 SHA256 为零,这是不正确的。以下是我正在使用的代码片段:
void update(uint8_t *hash){ cy_en_crypto_status_t cy_status; uint32_t *app_flash = (uint32_t*)CY_DFU_APP1_VERIFY_START; CY_ALIGN(4) uint32_t buffer[CY_FLASH_SIZEOF_ROW / sizeof(uint32_t)] = {0}; CY_ALIGN(4) uint8_t image_hash[CY_CRYPTO_SHA256_DIGEST_SIZE]; uint32_t flash_offset; /// init sha256 object cy_status = Cy_Crypto_Sha_Init(CRYPTO, CY_CRYPTO_MODE_SHA256, /* Hash mode */ ctx); if (cy_status != CY_CRYPTO_SUCCESS) { GK_LOG_ERROR("SHA init failed, status: %lu", cy_status); return GK_STATUS_CRYPTO_FAILED; } // Start at beginning of app flash area calc sha256 hash flash_offset = CY_DFU_APP1_VERIFY_START; while (flash_offset < _curr_offset) { // read in a row of data for(uint32_t i = 0; i < (CY_FLASH_SIZEOF_ROW / sizeof(uint32_t)); i++) { buffer[i] = *app_flash; app_flash++; } flash_offset += CY_FLASH_SIZEOF_ROW; // hash chunk cy_status = Cy_Crypto_Sha_Partial(CRYPTO, (uint8_t const *)buffer, sizeof(buffer), ctx); if (cy_status != CY_CRYPTO_SUCCESS) { GK_LOG_ERROR("Failed to hash update, status: %lu", cy_status); return GK_STATUS_CRYPTO_FAILED; } } =============> Always returns zero ================ cy_status = Cy_Crypto_Sha_Finish(CRYPTO, image_hash, ctx); if (cy_status != CY_CRYPTO_SUCCESS) { GK_LOG_ERROR("Failed to finish hash, status: %lu", cy_status); return GK_STATUS_CRYPTO_FAILED; } cy_status = Cy_Crypto_Sha_Free(CRYPTO, ctx); return GK_STATUS_SUCCESS;} 奇怪的是,Cy_Crypto_Sha_Finish () 总是返回零。 我执行的时候也是如此:cy_status = Cy_Crypto_Crc_Calc(CRYPTO、crc_ 32、data、(uint32_t)len、crc_ctx);crc(`crc_32`)始终为零。 除了调用 Cy_Crypto_Enable () 之外,我还应该设置其他配置设置吗? |
|
相关推荐
1个回答
|
|
您正使用PSoC4开发板(CY8KIT-149)尝试让SHA256和CRC加密功能正常工作,但是这两个函数始终返回0,即不起作用。您在代码片段中展示了一个名为"update"的函数,并提到了"cy_en_crypto_status_t"和"CY_DFU_APP1_VERIFY_START",但代码截断在中间。
根据您提供的信息,有几个可能导致问题的原因,可能需要进一步调查: 1. 硬件问题: 请确保硬件连接正确,并且硬件支持所需的加密功能。可以检查开发板用户指南或技术规格手册以获取相关信息。 2. 软件配置: 检查您的代码是否正确配置了加密功能。确保您已正确地使能了加密功能,并且传递给加密函数的参数是正确的。 如果您的PSOC软件提供文档,请参考文档以确保正确的配置和使用。 3. 数据或输入问题: 检查您传递给SHA256和CRC函数的输入数据是否正确。 确保您正在处理预期的数据,并且数据的格式和编码是正确的。 4. 错误处理: 确认您的代码中是否包含了适当的错误处理机制。 检查加密函数返回的错误代码,并尝试理解返回0的原因。 可能需要使用调试工具或输出日志来进一步诊断问题。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
205 浏览 0 评论
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
1253 浏览 1 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
848 浏览 0 评论
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
853 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
1073 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12010 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 19:39 , Processed in 0.620799 second(s), Total 74, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号