大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新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算法比较
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账号...