ECC(Elliptic Curves Cryptography)加密算法是一种公钥加密算法,与主流的RSA算法相比,ECC算法可以使用较短的密钥达到相同的安全程度。近年来,人们对ECC的认识已经不再处于研究阶段,开始逐步进入实际应用,如国家密码管理局颁布的SM2算法就是基于ECC算法的。下面我们来认识一下ECC的工作原理。

椭圆曲线

定义

在引入椭圆曲线之前,不得不提到一种新的坐标系-------射影平面坐标系,它是对笛卡尔直角坐标系的扩展,增加了无穷远点的概念。在此坐标系下,两条平行的直线是有交点的,而交点就是无穷远点。两者的变换关系为:

笛卡尔坐标系中的点a(x,y),令x=X/Z,y=Y/Z,则射影平面坐标系下的点a的坐标为(X,Y,Z),如点(2,3)就转换为(2Z,3Z,Z)。

椭圆曲线定义:一条椭圆曲线在射影平面上满足方程:Y2Z+a1XYZ+a3YZ2=X3+a2X2Z+a4XZ2+a6Z3的所有点的集合,且曲线上每个点都是非奇异的。

该方程有名维尔维斯特拉斯方程,椭圆曲线的形状不是椭圆,只是因为其描述的方程类似于计算一个椭圆周长的方程。转换到笛卡尔坐标系下的方程为:

y2+a1xy+a3y = x3+a2x2+a4x+a6

加法法则

运算法则:任意取椭圆曲线上两点P、Q (若P、Q两点重合,则做P点的切线)做直线交于椭圆曲线的另一点R’,过R’做y轴的平行线交于R。我们规定P+Q=R。(如图)

此处+不是简单的实数相加,是抽象出来的

O∞+P=P,O∞为零元

曲线上三个点A,B,C处于一条直线上,则A+B+C=O∞

下面,我们利用P、Q点的坐标(x1,y1),(x2,y2),求出R=P+Q的坐标(x4,y4)。

P,Q,R'共线,设为y=kx+b,

若P≠Q,k=(y1-y2)/(x1-x2)

若P=Q,k=(3x2+2a2x+a4 -a1y) /(2y+a1x+a3)

解方程组得到:

x4=k2+ka1-a2-x1-x2;

y4=k(x1-x4)-y1-a1x4-a3;

密码学中的椭圆曲线

定义

在有限域Fp中定义一个椭圆曲线,常用y2=x3+ax+b

Fp中只有p个元素,p为素数

Fp中,a+b≡c (mod p),a×b≡c (mod p),a/b≡c (mod p)

4a3+27b2≠0 (mod p)  a,b是小于p的非负整数

x,y属于0到p-1间的证书,曲线标记为Ep(a,b)

阶:椭圆曲线上一点P,存在正整数n,使得nP=O∞,则n为P的阶,若n不存在,则P是无限阶的,有限域上定义的椭圆曲线上所有点的阶都存在。

椭圆曲线难题

K=kG,其中K,G为Ep(a,b)上的点,k为小于n的整数,n是点G的阶,给定k和G,计算K容易,但是给定K和G,求k就很难了!

因此,设K为公钥,k为私钥,G为基点。

加密过程

A选定一条椭圆曲线Ep(a,b),并取曲线上一点作为基点G

A选择一个私钥k,并生成公钥K=kG

A将Ep(a,b)和k,G发送给B

B收到后将明文编码到Ep(a,b)上一点M,并产生一个随机数r

B计算点C1=M+rK,C2=rG

B将C1,C2传给A

A计算C1-kC2=M+rkG-krG=M

A对M解码得到明文

攻击者只能得到Ep(a,b),G,K,C1,C2,没有k就无法得到M。

签名验签流程

A选定一条椭圆曲线Ep(a,b),并取曲线上一点作为基点G

A选择一个私钥k,并生成公钥K=kG

A产生一个随机数r,计算R(x,y)=rG

A计算Hash=SHA(M),M‘=M(modp)

A计算S=(Hash+M'k)/r(modp)

B获得S和M',Ep(a,b),K,R(x,y)

B计算Hash=SHA(M),M'=M(modp)

B计算R'=(Hash*G+M'*K)/S=(Hash*G+M'*kG)*r/(Hash+M'k)=rG=R(x,y),若R'=R,则验签成功。

以上加解密和签名验签流程只是一个例子,具体应用时可以利用K=kG这一特性变幻出多种加解密方式。

ecc椭圆加密算法c语言,ECC算法介绍 - 椭圆曲线加密算法 - 中国数字证书CHINASSL相关推荐

  1. ecc椭圆加密算法c语言,ECC 椭圆曲线加密算法学习————ECDH与ECDSA

    0x00 前言 之前学习了实数域上的椭圆曲线与有限域$\mathbb {F}_{p}$上的椭圆曲线.详细可以参考ECC椭圆加密算法学习----从实数域到有限域的椭圆曲线. 不难发现,在实数域的标量乘法 ...

  2. SAS语言与算法介绍

    SAS语言是一种用于数据分析和统计建模的程序设计语言,由美国SAS Institute公司开发.SAS语言不仅可以进行数据的读取.处理.分析和报告,还可以进行数据挖掘.机器学习.人工智能等领域的应用. ...

  3. R语言--MCMC算法介绍以及例子

    Markov Chain Monte Carlo (MCMC) 是一种用于随机生成满足给定分布的样本的算法.它通过构建一个马尔可夫链来模拟一个随机过程,从而生成样本. 首先,你需要选择一个初始状态,然 ...

  4. rc4加密算法c语言实现,python实现RC4加密算法

    1. 背景介绍 1.1 RC4算法 在密码学中,RC4(来自Rivest Cipher 4的缩写)是一种流加密算法,密钥长度可变.它加解密使用相同的密钥,因此也属于对称加密算法.RC4是有线等效加密( ...

  5. 加密算法、散列算法、摘要、签名、证书、MD5、RSA、SSL通讯等等

    加密算法: 有对称加密和非对称加密.对称加密就是加密和解密时用的是同样的算法和密钥, 常见的对称加密算法有DES.3DES.Blowfish.IDEA.RC4.RC5.RC6和AES.而非对称加密是加 ...

  6. c语言kdm算法,基于椭圆曲线的KDM安全公钥加密方案

    作 者:谢小容[1] 王鲲鹏[2] XIE Xiao-rong,WANG Kun-peng(1.State Key Laboratory of Information Security,Graduat ...

  7. c语言实现椭圆曲线算法,椭圆曲线加密算法的C语言设计和实现

    椭圆曲线加密系统是迄今为止每比特具有最高安全强度的加密系统,它被认为最有希望成为下一代通用的公钥加密系统.文章将采用标准的C语言设计与实现椭圆曲线加密算法. 椭圆曲线加密算法的C语言设计和实现 椭圆曲 ...

  8. 解析 RC4 加密算法(C语言、python)

    目录 解析 RC4 加密算法(C语言.python): RC4加密算法是一种对称加密算法: 加密(解密)原理: RC4算法中的几个关键变量: RC4代码介绍: rc4初始化介绍: 包含三个参数: RC ...

  9. SM2算法第十二篇:数字证书原理

    出处:http://www.cnblogs.com/JeffreySun/archive/2010/06/24/1627247.html 作者:无恙 完美的逻辑,简直碉堡了.学习学习,,,尊重原创,热 ...

最新文章

  1. 深度学习时间序列预测:GRU算法构建单变量时间序列预测模型+代码实战
  2. 360金融产品总监赵鑫:互金产品经理应该关心这些东西
  3. 一款基于jQuery外观优雅带遮罩弹出层对话框
  4. C++中的值初始化和默认初始化
  5. js中call和apply的作用和用法
  6. 服务器磁盘操作系统双机软件集成,实战:ROSE HA双机热备系统安装指南
  7. Objective-C 学习笔记
  8. python字符串筛选输出_「每日一练」巧用Python对字符串进行筛选
  9. java list 去空字符串_从字符串列表中删除空字符串
  10. 两个iOS应用之间的跳转
  11. 支持64位的打印服务器,使用环境打印服务器是32位,添加共享的计算机是64位
  12. 词嵌入生成词向量_使用词嵌入创建诗生成器
  13. sqlserver 触发器 mysql_SQLServer触发器实例
  14. 松下电视机服务器未响应,松下等离子电视机通病有哪些 教你如何解决
  15. 2022年京东年货节红包雨攻略,年货节红包最高领8888元红包
  16. JNIEXPORT void JNICALL Java_testdll_set(JNIEnv *, jclass, jint j) //i = j;
  17. AR/VR应用前景探讨
  18. #使用SAS进行变量筛选、模型诊断、多元线性回归分析 #
  19. 生物信息学linux安装,构建生物信息学环境-1(Win10 Linux子系统的安装)
  20. ipv6 无状态地址管理

热门文章

  1. VOD(视频点播技术)基本原理
  2. 使用纯JS还原小时候游戏厅里的水果机
  3. 吕建伟:不要把自己的公司定位为软件公司
  4. 【Linux驱动】驱动设计硬件基础----串口、I2C、SPI、以太网接口、PCIE
  5. css 不多但够用(大概)
  6. 加速下载安装pytorch
  7. C++ this指针显式使用
  8. 【JZOJ 3823】【NOIP2014模拟9.9】遇见
  9. HashMap双层嵌套
  10. 大数据开发基础入门与项目实战(二)Java Web数据可视化之3.Linux概述、安装和结构