- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
椭圆曲线加密算法C语言设计和实现.doc
椭圆曲线加密算法的C语言设计和实现
椭圆曲线加密算法于1985年提出,由于自身优点,它一出现便受到关注,现在密码学界普遍认为它将替代RSA加密算法成为通用的公钥加密算法。那么我们今天就来看看椭圆曲线加密算法是如何通过C语言来设计实现的。
一、椭圆曲线加密算法的C语言设计
1、椭圆曲线加密系统的基本结构
椭圆曲线的加解密流程如图1所示:
椭圆曲线进行加密通信的过程如下:首先选定一个适合加密的椭圆曲线Ep(a,b),并取椭圆曲线上的一点作为基点G。选择一个私有密钥k,并生成公开密钥K=kG。加密时,将明文编码到Ep(a,b)上的一点M,并产生一个随机整数r(rn)。
计算点C1=M+rK,C2=rGo将C1、C2存入密文。解密时,从密文中读出CI、C2,计算C1-kC2,根据C1-kC2=M+rK-k( rG)=M+rK-r( kG)=M,解得的结果就是点M,即明文。
2、高精度整数的表示
加密算法几乎都是建立在高精度大整数的运算上, 而一般的程序语言都不提供大整数的结构,因此要表示上百位的高精度整数需另辟蹊径。
本文使用了LibTomMath库的高精度整数结构。LibTomMath是一个计算高精度整数的库的开源软件,由加拿大人汤姆St.丹尼斯编写,用标准C语言写了几乎所有标准的密码算法模块,并且在几乎所有的操作系统下都可执行。
LibTomMath库对高精度大整数的表示是该库最大的一个特点。在LibTomMath库中的高精度大整数表示如下:在32位机上unsigned long为32bit,用mp_digit表示这个类型:typedef unsigned_long mp_digit;实际使用了32位的28位,少用4位,因此用16进制表示一个mp_digit为0XXXXXXX,其中X为16进制数字,将这个32位bit串称为一个mp_digit单元,若干个mp_digit单元构成一个大整数,结构定义一个大整数mpint如下:
typeclef struct {
inl used,alloc,sign;
mp_digit *dp;
) mp_int;
其中:dp是存放大整数的地址,将大整数(二进比特串)分段(mp_digit单元)存放在从该地址起的内存里,缺省时分配dp为MP_PREC=64个mp_digit单元,即alloc =64;used为实际使用的mp_digit单元;sign=0表示非负数,为1表示负数。对于分配了alloc个mp_digit的大整数mpjnL,因为实际可以使用的比特数是28*alloc,因此可以表示的整数范围是[-228*alloc,228*alloc]。对于64位机情况类似。
3、椭圆曲线的参数选取
在基于椭圆曲线的加密和解密实现方案中,首先要给出椭圆曲线域的参数来确定一条椭圆曲线。
在SECI及IEEE P1363ECC工作草案中,所定义的二进制域上椭圆曲线用到六个参量T=(p,a,b,G,n,h)o p,a,b用来确定一条椭圆曲线,G为基点,n为点G的阶,h是椭圆曲线上所有点的个数m与n相除的整数部分,这几个参量取值的选择直接影响加密的安全性。参量值一般要求满足以下几个条件:
a)p当然越大越安全,但越大,计算速度会变慢,200位左右可以满足一般安全要求;
b)p≠nxh;
c)pt≠l (mod n),l≤t20;
d)a3+27b2≠O (mod p);
e)n为素数;
f)h≤4。
本文选用大素数域上的椭圆曲线E(p):y2=x3+ax+b作为我们的加密曲线。
(1)参数a、b的选取
采用构造法产生椭圆曲线CM(Complex Multiplication)法,即先确定有限域Fp和其上的椭圆fHj线的阶,然后再构造满足要求的椭圆曲线,即求出椭圆曲线方程E(p):y2=x3+ax+b中的a,b。
(2)基点的确定
首先在椭圆曲线上随机选择一个有效点,然后根据选择的点得到阶是n的有效基点。这里有效基点的阶最好是曲线阶的点,至少是曲线阶的最大素因子,这样可以保证一定的安全。
(3)私钥的确定
随机选取1到P-1之间的素数作为私钥d。
(4)公钥的确定
由d乘我们所确定的基点得到公钥K,即K=dG。
4、椭圆曲线的点加和标量乘
对于一般的椭圆曲线方程yz+alxy+a3y =X3+a2xz+a,x+a6,设点P(xi,yl),Q(X2,yz)的和R(X3,y3)的坐标为x3=k2+kal+a2+xl+x2;y3=k(XI-X4) -y1-alx4-a3,其中当P≠Q时(点加运算)k=(y1-y2)/(x1-x2);
当P=Q时(倍点运算)k= (3×2+2a2x+a4-aly)/(2y+a1x+a3);对于椭圆曲线方程y2-X3+aX+b,上述的公式变为X3=θ2_X1_X2; y3=θ(X1-X3)
您可能关注的文档
- 材料采购管理如何做最好.ppt
- 材料采购管理迈锐思C2集成套件必威体育精装版范例.ppt
- 村民学校建设实践研究分析.doc
- 村民自治制度中存在问题对策研究分析.doc
- 村民自治:影响因素、存在问题、解决途径其意义.doc
- 杜威实用主义教学思想对中国高校英语教学启示.doc
- 杜建:中国文学中水文化蕴涵.doc
- 杜晓-蒙顶山茶文化其观光旅游价值.doc
- 杜晓强、曾祥生——合同解除权制度正当性探析.doc
- 杜玉珍:宿舍文化建设及日常管理.doc
- 国开(中央电大)专科《财务管理》网上形考(任务一至四)试题及答案完整版721441024.pdf
- 高中物理第七章机械能守恒定律第10节能量守恒定律与能源教案2新人教版.pdf
- 国家开放大学电大《可编程控制器应用》机考5套真题题库及答案4.pdf
- 高中历史第一单元政治制度第4课中国历代变法和改革课后训练含解析.pdf
- 国开电大中级财务会计(一)第一、二、三、四次形考任务答案 完整版完整版721440940.pdf
- 高中物理 第4章 3 势能教案 教科版必修2-教科版高一必修2物理教案.pdf
- 在全区未成年人思想道德建设暨对外宣传工作会议上的讲话 .pdf
- 高质量发展在集团下半年经济工作会议上的讲话 .pdf
- 高中物理必修二电子课本 .pdf
- 高中物理第六章万有引力与航天第2节太阳与行星间的引力教案新人教版必完整版722733413.pdf
最近下载
- 继续教育《生态文明建设的理论与实践》考试试题及答案.docx VIP
- YMO青少年数学思维27届1-6年级全国总决赛试卷.pdf VIP
- 部编版小学语文四年级下册《古诗三首》《芙蓉楼送辛渐》预习单知识要点梳理.pdf
- 2024-2025学年高考数学一轮复习讲义:指数与指数函数(学生版+解析).pdf VIP
- 罗宾斯组织行为学第18版英文教学课件robbinsjudge_ob18_inppt_04.pptx
- 2024年中考英语热点阅读练习专题2 科学技术(含解析) .pdf VIP
- 质量部QC组年度工作总结暨年工作规划(PPT59页) .ppt
- WPS表格初级试题含答案.doc
- 2024年中考英语时文阅读06(科技与体育).doc VIP
- 2023年内蒙古大学公共课《中国近代史纲要》期末试卷A(有答案).docx VIP
文档评论(0)