简介
mbedtls(前身是 PolarSSL)是一个开源、轻量级的 SSL/TLS
库,专为嵌入式系统和资源受限环境设计。
RSA是一种广泛应用的非对称加密算法,是公开密钥密码体制(Public Key Cryptosystem)的一个典型代表,它的核心特点是采用一对密钥,分别是公开密钥(Public Key)和私有密钥(Private Key)。
相关头文件
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "mbedtls/rsa.h"
#include "mbedtls/sha1.h"
#include "mbedtls/pem.h"
#include "mbedtls/ssl.h"
#include "mbedtls/pk.h"
#include "mbedtls/entropy.h"
#include "mbedtls/ctr_drbg.h"
RSA 签名
- 使用 sha256 生成数据摘要(256位的哈希值)
int main(int argc, char const *argv[])
{
mbedtls_sha256_context ctx;
unsigned char data[] = "Hello";
unsigned char output[32] = {
0};
unsigned char sig[256] = {
0};
size_t data_len = sizeof(data) - 1;
mbedtls_sha256_init(&ctx);
if (mbedtls_sha256_update(&ctx, data, data_len) != 0) {
printf("failed\n");
}
mbedtls_sha256_finish(&ctx, output);
for (size_t i = 0; i < 256; i++)
{
printf("%02x", output[i]);
}
printf("\n");
int sig_len;
printf("len = %d\n", strlen(output));
mbedtls_sha256_free(&ctx);
}
- 加载私钥
- 使用私钥对数据摘要进行签名(随机数填充)
int RSA_signature(const unsigned char* m,