<1>在Linux环境下使用OPENSSL库给升级包签名

第一步:生成RSA-2048bit私钥

 openssl genrsa -out prikey.pem 2048 

第二步:用生成的私钥生成公钥

 openssl rsa -in prikey.pem -pubout -out pubkey.pem

第三步:计算目标文件的SHA256,例如目标文件名 update.bin

 1. 用文件流打开文件

  FILE *fp = fopen("update.bin","r");  /** only read */

  2.获取文件长度

  fseek(fp,0,SEEK_END);

  int length = ftell(fp);

  fseek(fp,0,SEEK_SET);

 3.映射文件

  (void *)pmap = mmap(NULL,length,PROT_READ,MAP_SHARED,fileno(fp),0);

 4.计算SHA256

  unsigned char hash[32];

  SHA256(pmap,length,hash);

第四步:使用私钥加密hash

  FILE *file = fopen("prikey.pem","r");

  RSA *prsa = PEM_read_RSA_PUBKEY(file,NULL,NULL,NULL);

  int rsa_len = RSA_size(prsa);

  unsigned char * encrypt_data = (unsigned char *)malloc(rsa_len);

  RSA_public_encrypt(rsa_len,hash,encrypt_data,prsa,RSA_NO_PADDING);

  /** 处理encrypt_data */

  RSA_free(prsa);

  free(encrypt_data );

  fclose(fp);

 

今天就写到这,签名用私钥加密,验证用公钥解密。

转载于:https://www.cnblogs.com/shanhuTang/p/8641183.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值