c语言添加miracl库,密码学C语言函数库——Miracl库快速上手中文指南(VC)

一、简介

密码学学习、研究人员往往着重于理论研究,难以与实践直接挂钩,今天介绍一下国外著名密码学C语言函数库——Miracl库的使用方法。

该库针对公钥密码学和椭圆曲线密码学的实现,写了很多函数,在这方面可以说是所有国外的库中功能最强大的了。但分组密码等方面的函数相对较少。

二、VC6中调用Miracl库的方法

下面我详细讲述一下使用方法。

1、VC中新建一个project,选择“win32 console application”,起名为123,建立一个空的project。

2、找到该工程保存的文件夹,把miracl\lib\ms32.lib,miracl\include\mirdef.h,miracl\include\miracl.h三个文件拷贝到123文件夹下。

3、在VC中左边的“workspace”列表中,选“fileview”选项卡,对着123 files单击右键,add files t o project,将ms32.lib加进来(注意:看不到ms32.lib的,把“文件类型”设置为“所有类型”)。

4、右键单击Source Files,添加文件,命名为123.c,写入下列程序:

#include "miracl.h"

main()

{

big a, b, c;

miracl *mip = mirsys(5000, 16);

a=mirvar(8);

b=mirvar(7);

c=mirvar(0);

add(a, b, c);

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用miraclC语言中实现BLS签名的示例代码: ```c #include <stdio.h> #include <stdlib.h> #include "miracl.h" #define BLS_CURVE "BLS381" // 使用的椭圆曲线名称 int main() { // 初始化miracl miracl* mip = mirsys(1000, 16); mip->IOBASE = 16; // 初始化BLS曲线参数 epoint* P = epoint_init(); Big q = mirvar(0); Big r = mirvar(0); Big h = mirvar(0); char* param = BLS_CURVE; ecurve_init(param, q, r, h, 1); epoint_copy(&CURVE_G_POINT, P); // 生成私钥 Big sk = mirvar(0); strong_bigrand(mip, q, sk); // 计算公钥 epoint* pk = epoint_init(); ecurve_mult(sk, P, pk); // 签名消息 char* msg = "hello, world!"; Big m = mirvar(0); mip->IOBASE = 256; cinstr(m, msg); mip->IOBASE = 16; Big sig = mirvar(0); ehashit(mip, SHA2, -1, msg, strlen(msg), sig); epoint* s = epoint_init(); ecurve_mult(sig, P, s); // 输出结果 printf("private key: %s\n", big_to_str(sk, NULL, 16)); printf("public key: %s\n", epoint_to_str(pk, NULL, 16)); printf("message: %s\n", msg); printf("signature: %s\n", epoint_to_str(s, NULL, 16)); // 释放资源 mirkill(sk); mirkill(q); mirkill(r); mirkill(h); epoint_free(P); epoint_free(pk); epoint_free(s); mirkill(sig); mirkill(m); mirkill(mip); return 0; } ``` 该示例中使用的是BLS381曲线,私钥使用随机数生成,公钥通过私钥和基点P的乘法计算得到。签名时,首先使用哈希函数计算消息的哈希值,然后将哈希值作为标量乘以基点P得到签名的点S。最后输出私钥、公钥、消息和签名的点。注意,在实际应用中,为了安全性,应该使用更安全的哈希函数,例如SHA-3。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值