C语言结合Mbedtls 3.6库:在嵌入式系统实现RSA - 2048 PKCS1验签功能
#include <stdio.h> #include "mbedtls/pk.h" #include "mbedtls/pk_internal.h" #include "mbedtls/rsa.h" int main() { // 公钥模数 unsigned char modulus[] = { 0xBC, 0xC8, 0xE7, 0x5F, 0xE4, 0x26, 0x5F, 0x02, 0xB1, 0x2A, 0x01, 0x3C, 0xDC, 0xAB, 0xCE, 0xC9, 0x95, 0xB7, 0x4E, 0xE5, 0x47, 0x46, 0xF9, 0xB4, 0x68, 0xFE, 0xB1, 0x27, 0x0A, 0xFA, 0xCB, 0x74, 0x9E, 0x25, 0x39, 0xF3, 0x80, 0x96, 0x23, 0xE3, 0xA9, 0x08, 0xAA, 0x19, 0xFE, 0x55, 0xE0, 0x44, 0x4D, 0xF7, 0x4B, 0x3E, 0x42, 0xE6, 0x47, 0x4F, 0xA0, 0x04, 0xD5, 0x00, 0x9B, 0x60, 0x90, 0x5D, 0xE8, 0x53, 0x68, 0x01, 0x3C, 0x79, 0xCD, 0x1B, 0xCA, 0xAC, 0x81, 0x07, 0xA4, 0x88, 0x99, 0x62, 0xF0, 0x4B, 0x14, 0x32, 0xA9, 0xCA, 0xAE, 0x13, 0xE6, 0xF1, 0x55, 0x92, 0xA7, 0x45, 0x94, 0xA9, 0xEF, 0x13, 0x34, 0x21, 0xE6, 0x88, 0xBC, 0x52, 0x45, 0x34, 0xBA, 0x01, 0x25, 0x77, 0xE6, 0xDC, 0x9B, 0xFB, 0x8A, 0x3F, 0x84, 0x66, 0x6B, 0xB5, 0x94, 0x80, 0x53, 0x0C, 0x5F, 0xE4, 0x38, 0xB6, 0x09 }; // 公钥指数 unsigned char public_exponent[] = { 0x01, 0x00, 0x01 }; mbedtls_pk_context pk; mbedtls_rsa_context *rsa; mbedtls_pk_init(&pk); // 初始化RSA上下文 rsa = mbedtls_pk_rsa(pk); mbedtls_rsa_init(rsa, MBEDTLS_RSA_PKCS_V15, 0); // 设置公钥模数和指数 mbedtls_mpi_read_binary(&rsa->N, modulus, sizeof(modulus)); mbedtls_mpi_read_binary(&rsa->E, public_exponent, sizeof(public_exponent)); // 数据 unsigned char data[] = "Hello, World!"; size_t data_length = sizeof(data); // 签名 unsigned char signature[MBEDTLS_MPI_MAX_SIZE]; size_t signature_length; // 加载公钥 int ret = mbedtls_rsa_check_pubkey(rsa); if (ret != 0) { printf("Failed to load public key: %d\n", ret); return 1; } // 验证签名 ret = mbedtls_rsa_pkcs1_verify(rsa, NULL, NULL, MBEDTLS_RSA_PUBLIC, MBEDTLS_MD_SHA256, data_length, data, signature); if (ret != 0) { printf("Signature verification failed: %d\n", ret); return 1; } printf("Signature verified successfully!\n"); // 清理 mbedtls_rsa_free(rsa); mbedtls_pk_free(&pk); return 0; } ######[AI写代码神器 | 1523点数解答 | 2024-12-02 11:03:25]
- Python 实现简易密码设置系统:多种功能交互与安全要点揭秘(字节豆包 | 286点数解答 | 2025-03-28 10:43:21)387
- C语言实现多功能密码设置系统:含代码及安全注意要点(字节豆包 | 414点数解答 | 2025-03-28 10:43:55)372
- C 语言实现:超简单密码设置系统,含代码与注意要点!(字节豆包 | 519点数解答 | 2025-03-28 12:42:02)412
- C语言实现密码管理系统:含功能代码与安全注意事项(字节豆包 | 409点数解答 | 2025-04-05 18:09:56)356
- C语言实现多功能密码系统:初始化、确认、设置、显示、重置与退出(字节豆包 | 454点数解答 | 2025-04-05 18:48:42)359
- C语言实现密码管理系统:含初始化、确认、设置、显示、重置及退出功能(字节豆包 | 413点数解答 | 2025-04-06 15:37:16)304
- C 语言实现密码管理系统:含初始化、确认、设置、显示、重置及退出功能(字节豆包 | 403点数解答 | 2025-04-06 15:37:54)316
- 嵌入式系统:用mbedtls 3.6实现RSA - 2048 PKCS1验签功能的C代码(DeepSeek | 1210点数解答 | 2025-07-10 10:09:35)146
- 嵌入式系统:用mbedtls 3.6实现RSA - 2048 PKCS1验签功能(公钥以十六进制字符串给出)(DeepSeek | 1538点数解答 | 2025-07-10 10:11:44)74
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)380
- 2048 游戏 HTML 代码框架解析与优化建议(字节豆包 | 138点数解答 | 2025-03-05 15:45:36)393
- 2048 游戏 HTML 框架搭建,后续开发建议大揭秘!(字节豆包 | 117点数解答 | 2025-03-11 00:06:25)346