sm2 C语言实现加密算法详解教程.pdfVIP

  1. 1、本文档共41页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

SM2算法

1、公钥密码算法介绍

消息鉴别:是一个证实收到的消息来自可信的源点且未被篡改的过程。它的

目的是信源识别,保证信息完整性。

数字签名:是一种确保数据完整性和非否认的手段,通过给消息附加一段数据

来实现)

公钥密码学与其他密码学完全不同,使用这种方法的加密系统,不仅公开加密

算法本身,也公开了加密用的密钥。

公钥?与只使用一个密钥的对称传统密码不同,券法是基于数学函

数而不是基于替换和置换。公钥密码学是非对称的,它使用两个独立的密钥,

即密钥分为公钥和私钥,因此称双密钥体制。双钥体制的公钥可以公开,因此

称为公钥算法。

公钥算法的出现,给密码的发展开辟了新的方向。公钥算法虽然已经历了

20多年的发展,但仍具有强劲的发展势头,在鉴别系统和密钥交换等安全技术

领域起着关键的作用

公钥算法的加密与解密由不同的密钥完成,且从加密密钥得到解密密钥

在计算上是不可行的。通常,公钥算法的两个密钥中任何一个都可以作为加密

而另一个用作解密,但不是所有的公钥算法都是如此。

2.SM2椭圆曲线公钥密码算法

SM2算法就是ECC椭圆曲线密码机制,但在签名、密钥交换方面不同于

ECDSA、ECDH等国际标准,而是采取了更为安全的机制。另外,SM2推荐了一条

256位的曲线作为标准曲线。

SM2标准包括总则,数字签名算法,密钥交换协议,公钥加密算法四个部

分,在每个部分的附录详细说明了实现的相关细节及示例。

SM2算法主要考虑素域Fp和F2m上的椭圆曲线,分别介绍了这两类域的表

示,运算,以及域上的椭圆曲线的点的表示,运算和多倍点计算算法。然后介

绍了编程语言中的数据转换,包括整数和字节串,字节串和比特串,域元素和

比特串,域元素和整数,点和字节串之间的数据转换规则。

详细说明了有限域上椭圆曲线的参数生成以及验证,椭圆曲线的参数包括

有限域的选取,椭圆曲线方程参数,椭圆曲线群基点的选取等,给出了选取

的标准以便于验证。最后给椭圆曲线上密钥对的生成以及公钥的验证,用户的

密钥对为(s,sP),其中s为用户的私钥,sP为用户的公钥,由于离散对数

问题从sP难以得到s,针对素域和二元扩域给出了密钥对生成细节和验证方

式。

在总则的基础上给出了数字签名算法包(数字签名生成算法和验证算法),

密钥交换协议以及公钥加密算法包(加密算法和解密算法),并在每个部分给

出了算法描述,算法流程和相关示例。

数字签名算法,密钥交换协议以及公钥加密算法都变用了国家密管理局批准

的SM3密码杂凑算法和随机数发生器。数字签名算法,密钥交换协议以及公钥加

密算法根据总则来选取有限域和椭圆曲线,并牛.成密钥对。

SM2算法在很多方面都优于RSA算法(RSA发展得早应用普遍,SM2领先也

很自然)RSA算法的危机在于其存在亚指数算法,对ECC算法而言一般没有亚指

数攻击算法

SM2椭圆曲线公钥密码算法:我国自主知识产权的商用密码算法,是ECC

(EllipticCurveCryptosystem)算法的一种,基于椭圆曲线离散对数问题,

计算复杂度是指数级,求解难度较大,同等安全程度要求下,椭圆曲线密码较

其他公钥算法所需密钥长度小很多。

ECC算法描述:

1、用户A选定一条适合加密的椭圆曲线Ep(a,b)(如:y2=x3+ax+b),并取

椭圆曲线上一点,作为基点G。

2、用户A选择一个私有密钥k,并生成公开密钥(公钥R)kkG。

3、用户A将Ep(a,b)和点(公钥)K,G传给用户B。

4、用户B接到信息后,将待传输的明文(M)编玛到Ep(a,b)上一点M,

并产生一个随机整数r(rn〈)。加密开始

5、用户B计算点Cl=M+rK;C2=rG0

6、用户B将Cl、C2传给用户Ao

7、用户A接到信息后,计算Cl-kC2,结果就是点M。因为Cl-kC2=M+rK-

k(rG)=M+rK-r(kG)=M

再对点M进行解码就可以得到明文。

文档评论(0)

专注于电脑软件的下载与安装,各种疑难问题的解决,office办公软件的咨询,文档格式转换,音视频下载等等,欢迎各位咨询!

1亿VIP精品文档

相关文档