非对称加解密原理

非对称加解密需要两个秘钥:公开秘钥(publickey)和私有密钥(privatekey)。公开秘钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的秘钥,所以这种算法叫作非对称加解密算法。

实现方案:

加密原理:

1,先产生一组随机数,32字节

2,根据产生的随机数计算出一个椭圆曲线点(采用国际标准给出的基点),由32字节变成64字节 A

3,根据产生的随机数计算出一个椭圆曲线点(采用公开密钥作为基点),由32字节变成64字节,取椭圆曲线点X坐标前16字节作为加

   密秘钥秘钥

4,对明文进行对称加密,加密秘钥为第3步产生的共享秘钥,得出密文 B

5,对密文进行一次消息认证码,基于AES-128的消息认证码算法,其中的秘钥取椭圆曲线点X坐标后16字节作为秘钥,产生认证码 C

6,计算非对称加密后的密文为 A + B + C


解密原理:

1,根据密文截取前面的64字节椭圆曲线点与中间部分的对称加密密文与最后的16字节消息认证码

2,根据私有密钥计算出一个椭圆曲线点(采用第一步64字节椭圆曲线点作为基点),由32字节变成64字节,取椭圆曲线点X坐标前16

   字节作为解密秘钥

3,根据对称加密密文进行一次消息认证码,其中校验秘钥为取椭圆曲线点X坐标后16字节作为秘钥,消息为对称加密密文,产生认

   证码

4,校验消息认证码是否准确,对已经获取的16字节消息认证码与产生的进行比较,如果不相等,校验失败,意味着解密失败。

5,对加密密文进行对称解密,秘钥为取椭圆曲线点X坐标前16字节作为秘钥,然后解密成功。


小结:椭圆曲线点满足交换律哦。a*(b*G) = b*(a*G),根据这个原理可以共享出一个秘钥来。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

敏哥搞wifi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值