SEED Labs – RSA Public-Key Encryption and Signature Lab

目录

Task 1: Deriving the Private Key

Task 2: Encrypting a Message

Task 3: Decrypting a Message

Task 4: Signing a Message

Task 5: Verifying a Signature

Task 6: Manually Verifying an X.509 Certificate

             Step 1: Download a certificate from a real web server.

             Step 2: Extract the public key (e, n) from the issuer’s certificate.

             Step 3: Extract the signature from the server’s certificate.             

             Step 4: Extract the body of the server’s certificate.

             Step 5: Verify the signature.


测试示例

gcc bn_sample.c -lcrypto

Task 1: Deriving the Private Key

代码如下

#include <stdio.h>
#include <openssl/bn.h>

#define NBITS 256

void printBN(char *msg, BIGNUM * a)
{
   /* Use BN_bn2hex(a) for hex string
    * Use BN_bn2dec(a) for decimal string */
   char * number_str = BN_bn2hex(a);
   printf("%s %s\n", msg, number_str);
   OPENSSL_free(number_str);
}

int main ()
{
  BN_CTX *ctx = BN_CTX_new();

  BIGNUM *p = BN_new();
  BIGNUM *q = BN_new();
  BIGNUM *n = BN_new();
  BIGNUM *p_ = BN_new();
  BIGNUM 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值