SM4算法

文章目录

  • 前言
  • 一、SM4是什么?
  • 二、go语言实现


前言

提示:以下是本篇文章正文内容,下面案例可供参考

一、SM4是什么?

SM4.0(原名SMS4.0)是中华人民共和国政府采用的一种分组密码标准,由国家密码管理局于2012年3月21日发布。相关标准为“GM/T 0002-2012《SM4分组密码算法》(原SMS4分组密码算法)”。
在商用密码体系中,SM4主要用于数据加密,其算法公开,分组长度与密钥长度均为128bit,加密算法与密钥扩展算法都采用32轮非线性迭代结构,S盒为固定的8比特输入8比特输出。
SM4.0中的指令长度被提升到大于64K(即64×1024)的水平,这是SM 3.0规格(渲染指令长度允许大于512)的128倍。

二、go语言实现

package mainimport ("crypto/cipher""demo1/utils""encoding/hex""fmt""github.com/tjfoc/gmsm/sm4"
)//sm4加密
//src:明文
//key:秘钥
func EncryptSm4(src, key []byte) []byte {block, err := sm4.NewCipher(key)if err != nil {panic(err)}src = utils.PaddingText(src, block.BlockSize())blockMode := cipher.NewCBCEncrypter(block, key[:block.BlockSize()])dst := make([]byte, len(src))blockMode.CryptBlocks(dst, src)return dst
}//sm4解密
//src:密文
//key:秘钥
func DecryptSm4(src, key []byte) []byte {block, err := sm4.NewCipher(key)if err != nil {panic(err)}blockMode := cipher.NewCBCDecrypter(block, key[:block.BlockSize()])dst := make([]byte, len(src))blockMode.CryptBlocks(dst, src)newText := utils.UnPaddingText(dst)return newText
}func main() {key := []byte("12345678abcdefgh")msg := []byte("wei")encrypt_msg := EncryptSm4(msg, key)fmt.Println("encrypt_msg = ", hex.EncodeToString(encrypt_msg))decrypt_msg := DecryptSm4(encrypt_msg, key)fmt.Println("decrypt_msg = ", string(decrypt_msg))
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/496634.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java并发编程实战~软件事务内存

很多同学反馈说,工作了挺长时间但是没有机会接触并发编程,实际上我们天天都在写并发程序,只不过并发相关的问题都被类似 Tomcat 这样的 Web 服务器以及 MySQL 这样的数据库解决了。尤其是数据库,在解决并发问题方面,可…

python list去重时间复杂度_List集合去重的一种方法 z

需要对一个List集合去重,情况是该集合中会出现多个Name属性值相同的,但是其他属性值不同的数据。在这种情况下,需求要只保留其中一个就好。我觉得遍历和HashSet都不是我想要的,便采用了一下方式定义Compare类,继承IEqu…

对于Office Live平台的思考

刚接触计算机编程的时候,脑子里想法比肚子里的墨水多得多,那时候想通过网络成立一个游戏开发团队,将不少人都很喜欢的一款FC游戏“重装机兵”(Metal Max)移植到电脑上来。当时的想法很激进也很宏大,我想的不…

中国学者用人工光感受器助失明小鼠复明

来源:《自然—通讯》中国研究人员在英国《自然通讯》杂志上发表报告说,他们通过在失明小鼠眼底植入一种新研发的人工光感受器,让它们的视觉得以恢复。如果这种技术发展成熟,未来或许能帮助因黄斑变性等疾病而视力下降或失明的患者…

PoW算法

文章目录前言一、PoW——工作量证明二、go语言简单案例前言 提示:以下是本篇文章正文内容,下面案例可供参考 一、PoW——工作量证明 ⚫ Proof-of-Work 简称 PoW,即为工作量证明 ⚫ 通过计算一个数值,使得拼揍上交易数据后内容的…

systemctl 命令完全指南

From:https://linux.cn/article-5926-1.html systemctl命令是系统服务管理器指令,它实际上将 service 和 chkconfig 这两个命令组合到一起。 任务 旧指令 新指令 使某服务自动启动 chkconfig --level 3 httpd on systemctl enable httpd.service 使某服务不自…

boundcolumn 根据值进行判断_Excel使用函数进行条件判断的方法步骤

Excel中的函数具体该如何进行判断数据的条件是否达到要求呢?下面是学习关于excel使用函数进行条件判断的教程,希望阅读过后对你有所启发! excel使用函数进行条件判断的教程 函数条件判断步骤1:如何计算成绩是否合格 函数条件判断步骤2:选中要…

城市大脑不仅是AI系统,更是结合人类智慧的混合智能巨系统

作者:刘锋 《互联网进化论》作者从2015年开始,智慧城市的类脑化进程不断加速,包括城市大脑,城市云脑,城市神经系统,智慧城市脑,交通大脑等概念不断涌现,人工智能成为当前科技热点的今…

转载:ListBox的SelectedValue和SelectedItem的区别

转载:ListBox的SelectedValue和SelectedItem的区别 原文:http://www.beacosta.com/blog/?p9What is the difference between SelectedValue and SelectedItem? When they are used by themselves, these two properties are very similar. The need fo…

区块链简单实现

前言 提示:以下是本篇文章正文内容,下面案例可供参考 一、区块链简单实现 package Blockimport ("crypto/sha256""encoding/hex""fmt""strconv""strings""time" )type Block struct{Pre…

charts漏斗图表_用echarts写的转换率图表(漏斗图 + 象形柱图)

平时用图表可能都是常规的折线图,柱状图,饼图这些基本的。下面的是一个漏斗图 象形柱图写出来的图表。完成后的图表,关键是右半边漏斗图很简单,只讲下象形柱图里的几个关键点(因为这里的用法有点特别,不是文档里的常规…

Java并发编程实战~协程

Golang 是一门号称从语言层面支持并发的编程语言,支持并发是 Golang 一个非常重要的特性。在上一篇文章《44 | 协程:更轻量级的线程》中我们介绍过,Golang 支持协程,协程可以类比 Java 中的线程,解决并发问题的难点就在…

SQL的经典语句(太全了)

关键字: sql语句 查询表内容 SELECT 表名case when a.colorder1 then d.name else end, 表说明case when a.colorder1 then isnull(f.value,) else end, 字段序号a.colorder, 字段名a.name, 标识case when COLUMNPROPERTY( a.id,a.name,IsIdentity)1 then √else end, 主键…

上帝的指纹——分形与混沌

来源:王东明科学网博客云朵不是球形的,山峦不是锥形的,海岸线不是圆形的,树皮不是光滑的,闪电也不是一条直线。——分形几何学之父Benoit Mandelbrot话说在一个世纪以前,数学领域相继出现了一些数学鬼怪&am…

PoS算法

文章目录前言一、PoS——权益证明二、go语言简单实现前言 提示:以下是本篇文章正文内容,下面案例可供参考 一、PoS——权益证明 PoS 是什么 ⚫ PoS(Proof of Stake)译为权益证明,是一种在公链中的共识算法&#xf…

mysql 内存 256m_解决mySQL占用内存超大问题

为了装mysql环境测试,装上后发现启动后mysql占用了很大的虚拟内存,达8百多兆。网上搜索了一下,得到高人指点my.ini。再也没见再详细的了..只好打开my.ini逐行的啃,虽然英文差了点,不过多少M还是看得明的^-^更改后如下&…

scrapy 教程

------------------------------------------------------------------------------------------ scrapy 中文文档 和 scrapy 英文文档参照看。因为中文文档比较老,英文文档是最新的。 scrapy 英文文档:https://doc.scrapy.org/en/latest scrapy 中文文档…

Java加密与解密的艺术~DigestInputStream

import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.security.DigestInputStream; import java.security.MessageDigest;/*** TODO 在此写上类的相关说明.<br>* author gqltt<br>* version 1.0.0 2021年11月29日<b…

智慧停车产业链市场全透析

来源&#xff1a;慧天地最近&#xff0c;Goodwin调查发现&#xff0c;在城市地区&#xff0c;接近30%的交通拥堵源自于司机寻找停车位。据称&#xff0c;到2020年&#xff0c;将会有20亿的汽车在公路上跑着&#xff0c;这就意味着&#xff0c;届时汽车的数量将比目前多了7.7亿辆…

语音合成与识别技术在C#中的应用 (转 )

语音合成与识别技术在C#中的应用 (转 &#xff09; 我们要想实现中文发音或中文语音识别&#xff0c;必需先安装微软的Speech Application SDK&#xff08;SASDK&#xff09;&#xff0c;它的最新版本是 SAPI 5.1 他能够识别中、日、英三种语言&#xff0c;你可以在这里下载&am…