sm2和sm4加密算法浅析

sm2和sm4加密算法浅析sm2和sm4加密算法浅析一:SM2简介:SM2是国家密码管理局于2010年12月17日发布的椭圆曲线公钥密码算法,SM2为非对称加密,基于ECC。该算法已公开。由于该算法基于ECC,故其签名速度与秘钥生成速度都快于RSA。ECC256位(SM2采用的就是ECC256位的一种)安全强度比RSA2048位高,但运算速度快于RSA。SM2和RSA算法比较SM2性能更优更安全:密码复杂度高、处理速度快、机器性能消耗更小①:加密算法以及流程:输入:需要发送的消息为比特串M,klen为M的比特

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

sm2和sm4加密算法浅析

一: SM2

简介:SM2是国家密码管理局于2010年12月17日发布的椭圆曲线公钥密码算法 ,SM2为非对称加密,基于ECC。该算法已公开。由于该算法基于ECC,故其签名速度与秘钥生成速度都快于RSA。ECC 256位(SM2采用的就是ECC 256位的一种)安全强度比RSA 2048位高,但运算速度快于RSA。

SM2和RSA算法比较

C:\Users\hwlb\AppData\Local\Temp\1592545292805

SM2性能更优更安全:密码复杂度高、处理速度快、机器性能消耗更小

①:加密算法以及流程:

输入:需要发送的消息为比特串M,klen为M的比特长度。

1.用随机数发生器产生随机数k∈[1,n-1],k的值为1到n-1

2.计算椭圆曲线点C1=[k]G=(x1,y1),将C1的数据类 型转换为比特串

3.计算椭圆曲线点S=[h]PB,若S是无穷远点,则报错并退出

4.计算椭圆曲线点[k]PB=(x2,y2),按本文本第1部分4.2.5和4.2.4给出的细节,将坐标x2、y2 的 数据类型转换为比特串

5.计算t=KDF(x2 ∥y2, klen),若t为全0比特串,则返回A1

6.计算C2 = M ⊕t

7.计算C3 = Hash(x2 ∥ M ∥ y2)

8.输出密文C = C1 ∥ C2 ∥ C3

加密算法流程:
在这里插入图片描述

②:解密算法以及流程

klen为密文中C2的比特长度,对密文C=C1 ∥ C2 ∥ C3 进行解密,需要实现以下步骤

1.从C中取出比特串C1,按本文本第1部分4.2.3和4.2.9给出的细节,将C1的数据类型转换为椭 圆曲线上的点,验证C1是否满足椭圆曲线方程,若不满足则报错并退出

2.计算椭圆曲线点S=[h]C1,若S是无穷远点,则报错并退出

3.计算[dB]C1=(x2,y2),按本文本第1部分4.2.5和4.2.4给出的细节,将坐标x2、y2的数据类型转 换为比特串

4.计算t=KDF(x2 ∥y2, klen),若t为全0比特串,则报错并退出

5.从C中取出比特串C2,计算M′ = C2 ⊕t

6.计算u = Hash(x2 ∥ M′ ∥ y2),从C中取出比特串C3,若u ̸= C3,则报错并退出
7.输出明文M′

解密算法流程:
在这里插入图片描述

③:SM2椭圆曲线公钥密码算法推荐曲线参数

椭圆曲线方程:y2 = x3 + ax + b。

曲线参数:

p=FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000000 FFFFFFFF FFFFFFFF 

a=FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000000 FFFFFFFF FFFFFFFC 

b=28E9FA9E 9D9F5E34 4D5A9E4B CF6509A7 F39789F5 15AB8F92 DDBCBD41 4D940E93 

n=FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF 7203DF6B 21C6052B 53BBF409 39D54123 

Gx=32C4AE2C 1F198119 5F990446 6A39C994 8FE30BBF F2660BE1 715A4589 334C74C7 

Gy=BC3736A2 F4F6779C 59BDCEE3 6B692153 D0A9877C C62A4740 02DF32E5 2139F0A0

二:SM4

简介:SM4由国家密码管理局于2012年3月21日发布,SM4 无线局域网标准的分组数据算法。对称加密,密钥长度和分组长度均为128位。

算法定义:该算法的分组长度为 128 比特,密钥长度为 128 比特。加密算 法与密钥扩展算法都采用 32 轮非线性迭代结构。解密算法与加密算法的结构相同,只是轮 密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序

(1)基本运算:

​ ⊕ 32 比特异或

​ i 32比特循环左移 i 位

(2)密钥及密钥参量 :
在这里插入图片描述

(3)轮函数 F:
在这里插入图片描述

(4)合成置换 T:
在这里插入图片描述
(5) 非线性变换τ
在这里插入图片描述

(6): 线性变换 L
在这里插入图片描述
(7):S 盒
在这里插入图片描述

(8)加/解密算法
在这里插入图片描述
(9):密钥扩展算法
在这里插入图片描述

00070e15, 1c232a31, 383f464d, 545b6269, 
70777e85, 8c939aa1, a8afb6bd, c4cbd2d9,
e0e7eef5, fc030a11, 181f262d, 343b4249, 
50575e65, 6c737a81, 888f969d, a4abb2b9, 
c0c7ced5, dce3eaf1, f8ff060d, 141b2229, 
30373e45, 4c535a61, 686f767d, 848b9299,
a0a7aeb5, bcc3cad1, d8dfe6ed, f4fb0209, 
10171e25, 2c333a41, 484f565d, 646b7279 

这边有个小demo:以供参考:https://download.csdn.net/download/kawayiyy123/12535104?spm=1001.2014.3001.5503

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/185419.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • FTP协议是一种用于什么的协议

    FTP协议是一种用于什么的协议FTP协议是一种用于什么的协议FTP(FileTransferProtocol,文件传输协议)是TCP/IP协议组中的协议之一。复FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传制到Web服务器上。此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。扩展资料FTP协议的任务从一台计算机.

  • 前端面试——W3C标准及规范「建议收藏」

    前端面试——W3C标准及规范「建议收藏」作为前端工程师对W3C标准和规范不是很陌生。很多招聘要求中经常提到深入了解W3C标准及规范。那下面就总结一下W3C标准及规范:概念:W3C标准  中文名:万维网联盟,外文名:WorldWideWebConsortium      万维网联盟标准不是某一个标准,而是一些列标准的集合。网页主要有三部分组成:结构(Structure)、表现(Presentation)、行为(B…

  • 如何更好的组织代码「建议收藏」

    如何更好的组织代码「建议收藏」一、组织代码的原因或意义代码的编写应当首先让其他人能够看懂,其次才是让机器能够执行。合理组织代码的目的并不是让计算机理解你的代码,而是让其他人能够很好地读懂你所编写的代码,进而在某种程度上高效而自信

  • Selenium 学习笔记(Java版)(一)永远的HelloWorld

    Selenium 学习笔记(Java版)(一)永远的HelloWorld

  • poe交换机和接入交换机的区别_光纤交换机和普通交换机的区别

    poe交换机和接入交换机的区别_光纤交换机和普通交换机的区别POE交换机与普通交换机区别的话,POE交换机就是除了能提供普通交换机所具有的传输功能,还能给网线的另一端设备提供供电功能。普通的交换机主要是交换数据的功能,并没有具备供电的功能。接下来我们就一起来详细看看POE交换机和普通交换机的区别具体有哪些?POE交换机和普通交换机具有以下几点区别:1.可靠性不同:POE交换机就是支持对网线供电的交换机,和普通交换机相比就是受电终端(比如AP、数字摄像头等)不用再进行电源布线,对整个网络而言可靠性更高。2.功能不同:POE交换机就是除了能提供普通交换机所

  • Python读写LMDB文件「建议收藏」

    Python读写LMDB文件「建议收藏」LMDB的全称是LightningMemory-MappedDatabase,它的文件结构简单,包含一个数据文件和一个锁文件。LMDB文件可以同时由多个进程打开,具有极高的数据存取速度,访问简单,不需要运行单独的数据库管理进程,只要在访问数据的代码里引用LMDB库,访问时给文件路径即可。让系统访问大量小文件的开销很大,而LMDB使用内存映射的方式访问文件,使得文件内寻址的开销非常小,使…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号