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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【Odin插件学习】新手上手示例:一个简单的角色面版

    【Odin插件学习】新手上手示例:一个简单的角色面版示例展示前置准备创建脚本,例SimpleCharacterPanel.cs添加Odin库using指令usingSirenix.OdinInspector;需求分析我们可以将面版主要分为如下四个部分:角色基础信息名称等级经验值角色模型角色属性经验上限(升级所需经验)攻击力血量上限蓝量上限血条蓝条模拟操作(金手指)经验值增加其他初始化等级提升 #region属性publicstringm_Characte

    2022年7月21日
    15
  • python中的静态方法和类方法

    python中的静态方法和类方法

    2021年11月19日
    49
  • eclipse配置android_零基础电脑初学者入门教程

    eclipse配置android_零基础电脑初学者入门教程Eclipse Android开发入门手册 资源下载http://tools.android-studio.orgjdk,AndroidSDK,开发工具eclipse、Androidstudio、idea  配置java环境搜索jdk安装对应的包,参照http://www.runoob.com/java/java-environment-setup.html  配置环境 安装eclipse和A…

    2022年10月4日
    2
  • ssh用法及命令

    ssh用法及命令http://blog.csdn.net/pipisorry/article/details/52269785什么是SSH?简单说,SSH是一种网络协议,用于计算机之间的加密登录。如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。最早的时候,互联网通信都是明文通信,一旦被截获,内容就暴露无疑。1995年,芬兰学者…

    2022年4月30日
    46
  • 0xf7什么意思(0x80041010)

    int最大值:0x7f7f7f7f=21474836472147483648溢出为-2147483648

    2022年4月12日
    80
  • 极限思想之芝诺悖论[通俗易懂]

    极限思想之芝诺悖论[通俗易懂]芝诺悖论是古希腊哲学家芝诺提出的一组悖论。芝诺是一个很有学问,同时也很好玩的人(淘气)。他如果在中国出生,估计很难大学毕业,只能跟池子(脱口秀演员~)一样,高中教室门外面站三年课,然后去讲脱口秀糊口。阿基里斯,大家都知道。古希腊神话中的战神。无论是力量,速度,耐力,格斗技巧,都是巅峰级别的。一夜睡三女,第二天依然可以血染特洛伊的男人。芝诺就提出:在跑步比赛中,如果跑得最慢的乌龟一开始领先…

    2022年6月18日
    37

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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