文档介绍:ECC密码算法编程实验
实验目的:
掌握ECC密码加解密原理,并利用Visual C++编程实现。
实验内容:
编程实现字符串”Hi, this is ECC!”的加密,并解密验证之。
网络空间安全实践教程
1
ECC密码算法编程实验
实验原理:
系统参数:
设p>3是一个素数,E是有限域Fp上的椭圆曲线
E(Fp)是相应的点群, 是E(Fp)中有较大素数阶q的一个点。
密钥生成:
随机选取整数 ,并计算P = dG。d是私钥,P是公钥。
网络空间安全实践教程
2
ECC密码算法编程实验
实验原理:
加密:
对明文 ,随机选取整数 ,计算数乘
(x,y) = kP,再计算 ,
明文 经加密后的密文即为 。
解密:
对任意密文 ,计算数乘 ,再计
算 ,得到解密后的明文 。
网络空间安全实践教程
3
ECC密码算法编程实验
实验要点说明:
公开参数选择:
ECC的参数选取不同于其他的加密算法,对于素数p,参数a,b以及基点G的选择有很多要求,产生合适的参数需要耗费很多时间。所以许多标准化文档中直接给出了一些公开参数的取值,我们在此实验中采用RFC5639中的一条椭圆曲线,ID为brainpoolP192r1,其公开参数取值如下(以16进制表示):
p = 0xC302F41D932A36CDA7A3463093D18DB78FCE476DE1A86297
a = 0x6A91174076B1E0E19C39C031FE8685C1CAE040E5C69A28EF
b = 0x469A28EF7C28CCA3DC721D044F4496BCCA7EF4146FBF25C9
= 0xC0A0647EAAB6A48753B033C56CB0F0900A2F5C4853375FD6
= 0x14B690866ABD5BB88B5F4828C1490002E6773FA2FA299B8F
q = 0xC302F41D932A36CDA7A3462F9E9E916B5BE8F1029AC4ACC1
网络空间安全实践教程
4
ECC密码算法编程实验
实验要点说明:
公开参数选择:
ECC的参数选取不同于其他的加密算法,对于素数p,参数a,b以及基点G的选择有很多要求,产生合适的参数需要耗费很多时间。所以许多标准化文档中直接给出了一些公开参数的取值,我们在此实验中采用RFC5639中的一条椭圆曲线,ID为brainpoolP192r1,其公开参数取值如下(以16进制表示):
p = 0xC302F41D932A36CDA7A3463093D18DB78FCE476DE1A86297
a = 0x6A91174076B1E0E19C39C031FE8685C1CAE040E5C69A28EF
b = 0x469A28EF7C28CCA3DC721D044F4496BCCA7EF4146FBF25C9
= 0xC0A0647EAAB6A48753B033C56CB0F0900A2F5C4853375FD6
= 0x14B690866ABD5BB88B5F4828C1490002E6773FA2FA299B8F
q = 0xC302F41D932A36CDA7A3462F9E9E916B5BE8F1029AC4ACC1
网络空间安全实践教程
5
ECC密码算法编程实验
实验要点说明:
椭圆曲线点的表示: