突然找到数年前写的这段代码,当是因为对密码学几乎不怎么了解踩了一些坑,现在开源出来方便大家直接利用。

ECDSA的全名是Elliptic Curve DSA,也就是椭圆曲线DSA,由于椭圆曲线的复杂性是的其具备良好的安全性,也就是说无法从公钥计算出私钥。

签名过程分为以下两步:
第一步:对于一段指定的字符串,首先对其做消息摘要。在示例代码中采用256bit的摘要,也就是以下部分:

EVP_MD_CTX md_ctx;
EVP_MD_CTX_init(&md_ctx);
EVP_DigestInit(&md_ctx,EVP_sha256());
EVP_DigestUpdate(&md_ctx, (const void*)szBufferData,nBufferData);
EVP_DigestFinal(&md_ctx, digest, &dgst_len);

第二步:通过产生一个随机数,记为K,然后利用其计算出两个大数,记为R和S。将R和S拼在一起就是对消息摘要的签名数据。

由于K是随机产生,所以经常出现同一段数据,同一个私钥,产生的签名文件不一样。其实这也很容易理解,因为每次加密K也未必一样。

那么验证的过程就是从签名数据中分离出R和S,然后利用公钥和S计算出R,如果和接收的R相等,那表示验证成功,否则失败。

以上是简单的介绍签名以及验证过程,具体可以参见详细代码。其中包括产生公私钥对并保存文件,以及对数据或者文件签名,验证过程。具体实现代码我已经封装到指定类当中了,使用示例如下:

 1 CECDSAManager ecdsaManager;
 2     if (ECDSA_SUCESS == ecdsaManager.CreateECDSAKey("E:"))
 3     {
 4         if (ECDSA_SUCESS == ecdsaManager.ECDSASignFileToLicenceFile("E://ec_key.pem","D://ffmpeg解码.JPG","D://1.sig"))
 5         {
 6             if (ECDSA_SUCESS == ecdsaManager.ECDSAVerifyLicenceFile("E://public.pem","D://ffmpeg解码.JPG","D://1.sig"))
 7             {
 8                 printf("Sucess \n");
 9             }
10         }
11     }

以下代码可以在VS2010中编译运行,源码下载:ECDSATestProj.zip

转载于:https://www.cnblogs.com/mod109/p/6077902.html

使用openssl实现ECDSA签名以及验证功能(附完整测试源码)相关推荐

  1. 用POP3获取邮箱邮件内容,支持SSL验证登陆(完整C#源码)

    延续上一篇用POP3获取邮箱邮件内容(C#源码) 上一篇中提到一个问题,网上一般流传的是非SSL验证登陆的,适用163之类的邮箱,但是QQ邮箱一般都是登陆不上的.这次我来提供一个支持SSL验证登陆的方 ...

  2. android自动更新demo,Android程序自动更新功能模块的实现方法【附完整demo源码下载】...

    本文实例讲述了Android程序自动更新功能模块的实现方法.分享给大家供大家参考,具体如下: 在程序启动的时候检测服务器上有没有对应版本更新,如果有更新,提示用户是否更新. 在程序启动的时候首先调用更 ...

  3. r、s sm2签名值_用Openssl计算ECDSA签名

    ECDSA的全名是Elliptic Curve DSA,即椭圆曲线DSA.它是Digital Signature Algorithm (DSA)应用了椭圆曲线加密算法的变种.椭圆曲线算法的原理很复杂, ...

  4. 直播平台开发时iOS 开发内购功能,直播平台源码搭建

    1.首先登录苹果账号,在直播平台源码搭建完成好后,进入后台管理中心添加商品,选择功能----App内购买项目------添加商品类型.商品的ID.以及说明信息. 2.在直播平台源码搭建后台创建沙盒测试 ...

  5. 动态短视频壁纸多功能情侣头像,套图等功能微信小程序源码下载

    这是一款属于美化类型的小程序吧 里面的内容包含了: 动态视频 静态壁纸 情侣头像 签名套图等等 另外这款小程序目前经过修改已支持多种类型的流量主广告了 如单价较高,比较热门的流量主有: 激励视频 插屏 ...

  6. 多功能拼团商城源码-带优惠券功能+自适应移动端+对接免签约支付

    简介: 开发语言:PHP 数据库:MySQL 这款拼团商城源码非常完整,源码整体也非常简洁,功能挺全面的,有拼团.优惠券.限时折扣等功能 对接了个人免签约,省去了申请收款接口的麻烦 安装教程: 测试环 ...

  7. Anlin-chat多功能聊天室php源码下载,极速安装

    一.名称:Anlin-chat多功能聊天室php源码 二.简介(作用): 可修改成 网站客服系校园站 统 可盈利,利用打赏.VIP.内容付费.广告盈利.资源付费等方法盈利. 三.下载地址: 聊天室zi ...

  8. 字体设计符号组合多功能微信小程序源码 带流量主

    这是一款主打字体设计,符号组合等多模板功能的一款微信小程序源码 内含多种功能,比如: 花式字体设计 表情字体组合设计 翅膀字体组合 火星文一键生成 符号库 空白名称 彩色网名等等 还有很多,所以就不一 ...

  9. 字体设计符号组合多功能微信小程序源码下载支持多流量主模式

    这是一款主打字体设计,符号组合等多模板功能的一款微信小程序源码 内含多种功能,比如: 花式字体设计 表情字体组合设计 翅膀字体组合 火星文一键生成 符号库 空白名称 彩色网名等等 还有很多,所以小编就 ...

  10. 微信小程序:字体设计符号组合多功能微信小程序源码

    这是一款主打字体设计,符号组合等多模板功能的一款微信小程序源码 内含多种功能,比如: 花式字体设计 表情字体组合设计 翅膀字体组合 火星文一键生成 符号库 空白名称 彩色网名等等 还有很多,所以小编就 ...

最新文章

  1. Visual Studio中的TabControl控件的用法
  2. 裴健当选加拿大皇家学会院士:曾任华为首席科学家、京东副总裁,学术引用超8万次...
  3. git安装和初步使用
  4. 54失败是成功之母二
  5. jsp页面验证码(完整实例)
  6. 信息学奥赛C++语言:单词转换
  7. C#生成不重复随机数列表
  8. 在sealos搭建的k8s集群中自定义kubeconfig文件
  9. Atitit.web三大编程模型 Web Page Web Forms 和 MVC
  10. 信号与系统——有关卷积的意义
  11. 三菱plc pwm指令_三菱PLC必会编程指令汇总,收藏这些就够了!
  12. 学习笔记(3)-重叠社区发现Copra算法
  13. tomcat在45秒内没有启动,启动超时
  14. 训练模型两种保存方式 saver& load
  15. 十六进制字符串转中文
  16. 如何快速拷贝整个网站所有网页
  17. 利用PHP语言开发手机app后台服务器的框架是什么?或者说开发流程是怎么样的?
  18. 项目管理之项目干系人
  19. 7-19 评委打分 (15 分)
  20. JS 变量保存为本地json文件,读取本地json文件为变量

热门文章

  1. spring.net学习(一) 搭建环境,实例化spring.net容器。
  2. JavaScript DOM基础2
  3. 运行IIS提示500.21错误
  4. SCOM 2012 RC 升级到 SCOM 2012 RTM 手记
  5. 详解display:inline | block |inline-block的区别(转)
  6. 想测一下接口的并发数?手把手教你!
  7. 周末内部常用的15款开发者工具
  8. Wifi万能钥匙已经被淘汰了!Github这个开源工具太好用了!
  9. 这月绩效差点没了!搞了一个“新人拼团”活动遇到黑产,搭进去了8台服务器......
  10. 腾讯,开源了,高性能 RPC 框架,是要干DUBBO 吗?