假设要签名的消息是一个字符串:“Hello World!”。DSA签名的第一个步骤是对待签名的消息生成一个消息摘要。不同的签名算法使用不同的消息摘要算法。比如,DSS使用SHA1来生成160比特的摘要,而ECDSA256使用SHA256生成256比特的摘要。     摘要生成结束后,应用签名算法对摘要进行签名: 首先查看一下 OpenSSL 内建了哪些椭圆曲线,使用命令为: openssl ecparam -list_curves         选择一条椭圆曲线创建 ECC 公私钥对,这里使用 secp256k1,执行命令: openssl ecparam -name secp256k1 -genkey -out ec.key         可以用文本编辑器打开 ec.key 文件,其内容类似于: —–BEGIN EC PARAMETERS—– BgUrgQQACg== —–END EC PARAMETERS—– —–BEGIN EC PRIVATE KEY—– MHQCAQEEINMie6Xet 1. 前言         最近整理了整理,把之前好玩的东西翻一下,这期就到了http了。         如何快速写一个http服务器?方法当然五花八门了,python、go几行就能实现出来了,那么c\c++如何实现呢? 2. 相关接口 libevent内置了http相关的处理方法(之前早期版本会有一些不稳定,现在event2比较靠谱了),同时支持 openssl 3 默认废弃了 旧版本 (opessl 1.x) 的部分api 导致部分旧ecc 代码无法使用(可以通过配置编译选项打开)新接口是真的方便,基本上你都不需要懂啥密码学知识,对我们这种密码白痴来说太好了。,这里展示如何使用新接口用ECC 进行加密解密。 http://gmssl.org/docs/sm2.html 曲线sm2p256v1基于ANSI X9 . 62 elliptic curve prime256v1 (aka secp256r1, NIST P-256) 椭圆曲线 NID 一、椭圆曲线密码算法 椭圆曲线:是一类二元多项式方程,它的解构成一个椭圆曲线。 椭圆曲线参数:定义一条唯一的椭圆曲线。介绍其中两个参数G(基点)和n(阶)。G点(xG, yG)是椭圆曲线上的基点, 有限域椭圆曲线上所有其他的点都可以通过G点的倍乘运算 计算 得到,即P=[d]G, d也是属于有限域,d的最大值为素数n。 有限域上的椭圆曲线:椭圆曲线上的解不是连续的,而是离散的,解的值满足有限域的限制。有限域有两种,Fp和F2m。 E(Fq):Fq上椭圆曲线E 的所有有理点(包括无穷远点O)组成的集合。 将库文件解压到本地文件后进行配置: a、config配置: 进入解压后的目录,执行 ./config shared --prefix=/usr/local/ openssl -- openssl dir=/usr/local/ shared 为生成动态连... 在前面的文章《写给开发人员的实用密码学 - 对称加密算法》中,介绍了现代密码学中非常重要的加密解密算法。从工程学的角度,选取密钥足够长的加密算法(比如AES 256、AES 512),是无... 一. 椭圆曲线加密算法 简称ECC,是基于椭圆曲线数学理论实现的一种非对称加密算法。相比RSA,ECC优势是可以使用更短的密钥,来实现与RSA相当或更高的安全,RSA加密算法也是一种非对称加密算法,在公开密钥加密和电子商业中RSA被广泛使用。据研究,160位ECC加密安全性相当于1024位RSA加密,210位ECC加密安全性相当于2048位RSA加密(有待考证) 二. 什么是椭圆曲线 Wolfram MathWorld给出了个准确非凡的定义椭圆曲线。椭圆曲线可以暂时简单的理解为描述了特定点的集合的公式: openssl ec -in prime256v1 -key.pem -out prime256v1 -key.der -outform der 将私钥转换成data格式(包含因子和pem内容): openssl ec -in prime256v