在ESP32上使用RSA加密消息

问题描述

在这里想要实现的是在使用PlatformIO + Arduino框架构建的ESP32应用程序中对消息进行加密。

经过一些搜索,我找到了这个仓库:https://github.com/espressif/arduino-esp32

里面有一个工具似乎可以帮助我实现自己想要的https://github.com/espressif/arduino-esp32/blob/master/tools/sdk/include/mbedtls/mbedtls/rsa.h

我将https://platformio.org/lib/show/10874/mbedtls处的库“ mbedtls”导入了PlatformIO项目,并从那里开始工作。

问题:如何在应用程序中加载私钥文件并使用RSA工具加密消息?

我目前拥有的是:

client.once('ready',() => {
    client.user.setActivity('something',{type: 'PLAYING'});
});

现在,我通过头文件直接以char *形式(我不确定如何将pem密钥文件导入应用程序)导入私钥内容int ret = 1; char buf[1024]; mbedtls_pk_init(&pk); memset(buf,sizeof(buf)); mbedtls_mpi_init(&N); mbedtls_mpi_init(&P); mbedtls_mpi_init(&Q); mbedtls_mpi_init(&D); mbedtls_mpi_init(&E); mbedtls_mpi_init(&DP); mbedtls_mpi_init(&DQ); mbedtls_mpi_init(&QP); ret = mbedtls_pk_parse_key(&pk,vendorPrivateKey,sizeof(vendorPrivateKey),NULL,NULL); if (ret != 0) { Serial.print(" Failed! mbedtls_pk_parse_key returned: "); Serial.print(-ret); Serial.println(); } if (mbedtls_pk_get_type(&pk) == MbedTLS_PK_RSA) { mbedtls_rsa_context *rsa = mbedtls_pk_rsa(pk); if ((ret = mbedtls_rsa_export(rsa,&N,&P,&Q,&D,&E)) != 0 || (ret = mbedtls_rsa_export_crt(rsa,&DP,&DQ,&QP)) != 0) { Serial.println(" Failed! Could not export RSA parameters."); } } 值存储在secrets.h中的位置

然后,当我运行程序时,它为我产生以下错误消息: const unsigned char *vendorPrivateKey = reinterpret_cast<const unsigned char *>(vendOR_PRIVATE_KEY);

根据pk.h文件说明,此错误代码十六进制的16616是3D00,表示Failed! mbedtls_pk_parse_key returned: 15616

有没有提供格式检查并查看我的私钥文件是否符合mbedtls要求的网站?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)