ECC密码算法编程实验-7.5课件

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

7.5ECC密码算法编程实验实验目的:掌握ECC密码加解密原理,并利用VisualC++编程实现。实验内容:编程实现字符串”Hi,thisisECC!”的加密,并解密验证之。网络空间安全实践教程17.5ECC密码算法编程实验实验原理:系统参数:设p3是一个素数,E是有限域Fp上的椭圆曲线E(Fp)是相应的点群,是E(Fp)中有较大素数阶q的一个点。密钥生成:随机选取整数,并计算P=dG。d是私钥,P是公钥。网络空间安全实践教程2baxxy32),(yxGGG]1,2[qd7.5ECC密码算法编程实验实验原理:加密:对明文,随机选取整数,计算数乘(x,y)=kP,再计算,明文经加密后的密文即为。解密:对任意密文,计算数乘,再计算,得到解密后的明文。网络空间安全实践教程3**12(,)ppmmmFF]1,1[pkpymcpxmckGCmodmod,22110,),(21mmm),,(210ccC**12(,,)()opppcCccEFFF),(0yxdCpycmpxcmmod,mod12211112(,)mm7.5ECC密码算法编程实验实验要点说明:公开参数选择:ECC的参数选取不同于其他的加密算法,对于素数p,参数a,b以及基点G的选择有很多要求,产生合适的参数需要耗费很多时间。所以许多标准化文档中直接给出了一些公开参数的取值,我们在此实验中采用RFC5639中的一条椭圆曲线,ID为brainpoolP192r1,其公开参数取值如下(以16进制表示):p=0xC302F41D932A36CDA7A3463093D18DB78FCE476DE1A86297a=0x6A91174076B1E0E19C39C031FE8685C1CAE040E5C69A28EFb=0x469A28EF7C28CCA3DC721D044F4496BCCA7EF4146FBF25C9G.x=0xC0A0647EAAB6A48753B033C56CB0F0900A2F5C4853375FD6G.y=0x14B690866ABD5BB88B5F4828C1490002E6773FA2FA299B8Fq=0xC302F41D932A36CDA7A3462F9E9E916B5BE8F1029AC4ACC1网络空间安全实践教程47.5ECC密码算法编程实验实验要点说明:公开参数选择:ECC的参数选取不同于其他的加密算法,对于素数p,参数a,b以及基点G的选择有很多要求,产生合适的参数需要耗费很多时间。所以许多标准化文档中直接给出了一些公开参数的取值,我们在此实验中采用RFC5639中的一条椭圆曲线,ID为brainpoolP192r1,其公开参数取值如下(以16进制表示):p=0xC302F41D932A36CDA7A3463093D18DB78FCE476DE1A86297a=0x6A91174076B1E0E19C39C031FE8685C1CAE040E5C69A28EFb=0x469A28EF7C28CCA3DC721D044F4496BCCA7EF4146FBF25C9G.x=0xC0A0647EAAB6A48753B033C56CB0F0900A2F5C4853375FD6G.y=0x14B690866ABD5BB88B5F4828C1490002E6773FA2FA299B8Fq=0xC302F41D932A36CDA7A3462F9E9E916B5BE8F1029AC4ACC1网络空间安全实践教程57.5ECC密码算法编程实验实验要点说明:椭圆曲线点的表示:用包含两个大整数的新结构体表示椭圆曲线上的点,例如:typedefstructECCPoint{Bigintx;Biginty;}ECCPoint;而无穷远点O我们就用坐标(0,0)表示。网络空间安全实践教程67.5ECC密码算法编程实验实验要点说明:椭圆曲线数乘运算:在椭圆曲线密码中,最重要的就是数乘运算,即给定数k与点P,计算点k*P的过程。为了计算快速,可以将数乘运算可以化为点加运算(计算P+Q)与倍点运算(计算2*P)的结合,可参考7.1中求大数模幂时用到的模幂算法,可参考如下代码:网络空间安全实践教程77.5ECC密码算法编程实验ECCPointECCTimes(Bigintk,ECCPointP,Bigintn)//椭圆曲线数乘算法,计算k*P{ECCPointQ={{0},{0}};Bigintone={1};while(Length(k)0){while(!(k.num[0]&1)){BitMoveRight(k);P=ECCDouble(P,n);}k=Sub(k,one);Q=ECCAdd(Q,P,n);}returnQ;}网络空间安全实践教程87.5ECC密码算法编程实验实验准备:Windows操作系统VisualStudio2010以上开发环境网络空间安全实践教程97.5ECC密码算法编程实验实验步骤:利用VisualC++开发环境,构建类似右图的ECC密码加解密界面。编写密钥生成按钮事件:随机生成私钥d,利用基点G计算公钥P=dG并输出。编写加密按钮事件:从明文框中读入字符序列,利用公钥进行加密,在密文框中输出。编写解密按钮事件:从密文框中读入字符序列,根据私钥对其解密,在解密的明文框中输出。网络空间安全实践教程107.5ECC密码算法编程实验实验结果要求:给出关键编程思路。总结实验过程中遇到的问题和经验。网络空间安全实践教程117.5ECC密码算法编程实验实验视频:网络空间安全实践教程12

1 / 12
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功