使用openssl实现ECDSA签名以及验证功能(附完整测试源码)
突然找到数年前写的这段代码,当是因为对密码学几乎不怎么了解踩了一些坑,现在开源出来方便大家直接利用。
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签名以及验证功能(附完整测试源码)相关推荐
- 用POP3获取邮箱邮件内容,支持SSL验证登陆(完整C#源码)
延续上一篇用POP3获取邮箱邮件内容(C#源码) 上一篇中提到一个问题,网上一般流传的是非SSL验证登陆的,适用163之类的邮箱,但是QQ邮箱一般都是登陆不上的.这次我来提供一个支持SSL验证登陆的方 ...
- android自动更新demo,Android程序自动更新功能模块的实现方法【附完整demo源码下载】...
本文实例讲述了Android程序自动更新功能模块的实现方法.分享给大家供大家参考,具体如下: 在程序启动的时候检测服务器上有没有对应版本更新,如果有更新,提示用户是否更新. 在程序启动的时候首先调用更 ...
- r、s sm2签名值_用Openssl计算ECDSA签名
ECDSA的全名是Elliptic Curve DSA,即椭圆曲线DSA.它是Digital Signature Algorithm (DSA)应用了椭圆曲线加密算法的变种.椭圆曲线算法的原理很复杂, ...
- 直播平台开发时iOS 开发内购功能,直播平台源码搭建
1.首先登录苹果账号,在直播平台源码搭建完成好后,进入后台管理中心添加商品,选择功能----App内购买项目------添加商品类型.商品的ID.以及说明信息. 2.在直播平台源码搭建后台创建沙盒测试 ...
- 动态短视频壁纸多功能情侣头像,套图等功能微信小程序源码下载
这是一款属于美化类型的小程序吧 里面的内容包含了: 动态视频 静态壁纸 情侣头像 签名套图等等 另外这款小程序目前经过修改已支持多种类型的流量主广告了 如单价较高,比较热门的流量主有: 激励视频 插屏 ...
- 多功能拼团商城源码-带优惠券功能+自适应移动端+对接免签约支付
简介: 开发语言:PHP 数据库:MySQL 这款拼团商城源码非常完整,源码整体也非常简洁,功能挺全面的,有拼团.优惠券.限时折扣等功能 对接了个人免签约,省去了申请收款接口的麻烦 安装教程: 测试环 ...
- Anlin-chat多功能聊天室php源码下载,极速安装
一.名称:Anlin-chat多功能聊天室php源码 二.简介(作用): 可修改成 网站客服系校园站 统 可盈利,利用打赏.VIP.内容付费.广告盈利.资源付费等方法盈利. 三.下载地址: 聊天室zi ...
- 字体设计符号组合多功能微信小程序源码 带流量主
这是一款主打字体设计,符号组合等多模板功能的一款微信小程序源码 内含多种功能,比如: 花式字体设计 表情字体组合设计 翅膀字体组合 火星文一键生成 符号库 空白名称 彩色网名等等 还有很多,所以就不一 ...
- 字体设计符号组合多功能微信小程序源码下载支持多流量主模式
这是一款主打字体设计,符号组合等多模板功能的一款微信小程序源码 内含多种功能,比如: 花式字体设计 表情字体组合设计 翅膀字体组合 火星文一键生成 符号库 空白名称 彩色网名等等 还有很多,所以小编就 ...
- 微信小程序:字体设计符号组合多功能微信小程序源码
这是一款主打字体设计,符号组合等多模板功能的一款微信小程序源码 内含多种功能,比如: 花式字体设计 表情字体组合设计 翅膀字体组合 火星文一键生成 符号库 空白名称 彩色网名等等 还有很多,所以小编就 ...
最新文章
- Visual Studio中的TabControl控件的用法
- 裴健当选加拿大皇家学会院士:曾任华为首席科学家、京东副总裁,学术引用超8万次...
- git安装和初步使用
- 54失败是成功之母二
- jsp页面验证码(完整实例)
- 信息学奥赛C++语言:单词转换
- C#生成不重复随机数列表
- 在sealos搭建的k8s集群中自定义kubeconfig文件
- Atitit.web三大编程模型 Web Page Web Forms 和 MVC
- 信号与系统——有关卷积的意义
- 三菱plc pwm指令_三菱PLC必会编程指令汇总,收藏这些就够了!
- 学习笔记(3)-重叠社区发现Copra算法
- tomcat在45秒内没有启动,启动超时
- 训练模型两种保存方式 saver& load
- 十六进制字符串转中文
- 如何快速拷贝整个网站所有网页
- 利用PHP语言开发手机app后台服务器的框架是什么?或者说开发流程是怎么样的?
- 项目管理之项目干系人
- 7-19 评委打分 (15 分)
- JS 变量保存为本地json文件,读取本地json文件为变量
热门文章
- spring.net学习(一) 搭建环境,实例化spring.net容器。
- JavaScript DOM基础2
- 运行IIS提示500.21错误
- SCOM 2012 RC 升级到 SCOM 2012 RTM 手记
- 详解display:inline | block |inline-block的区别(转)
- 想测一下接口的并发数?手把手教你!
- 周末内部常用的15款开发者工具
- Wifi万能钥匙已经被淘汰了!Github这个开源工具太好用了!
- 这月绩效差点没了!搞了一个“新人拼团”活动遇到黑产,搭进去了8台服务器......
- 腾讯,开源了,高性能 RPC 框架,是要干DUBBO 吗?