当前位置: 首页 > web >正文

定制一款国密浏览器(9):SM4 对称加密算法

上一章介绍了 SM3 算法的移植要点,本章介绍对称加密算法 SM4 的移植要点。

SM4 算法相对 SM3 算法来说复杂一些,但还是比较简单的算法,详细算法说明参考《GMT 0002-2012 SM4分组密码算法》这份文档。铜锁开源项目的实现代码在 sm4.c 文件中,直接拿过来编译就可以。

但需要注意的是,SM4 属于块加密算法,也叫分组密码算法。所谓分组密码算法,一次只加密一个分组的数据。SM4 的分组长度是 128 位,也就是一次只处理 16 个字节。在实际应用中,肯定不会只加密 16 个字节的数据,这就涉及到如何分组,如果数据字节数不是 16 的整数倍,还涉及到填充问题。

关于分组和填充,请参考我之前写的文章《写给开发人员的实用密码学 - 对称加密算法》,这里不赘述。

铜锁中实现了非常多的分组算法,考虑到时间人力有限,就先移植了 SM4-ECB 和 SM4-CBC 两种。实现代码位于 e_sm4.c 文件中。详细修改参考我在 github 上的提交:

http://www.xdnf.cn/news/463.html

相关文章:

  • 捋一遍Leetcode【hot100】的二叉树专题
  • 微前端框架Module Federation
  • 如何在3090显卡上使用老版本torch
  • 个人自用-导入安装Hexo
  • C++红黑树实现
  • 【大疆dji】ESDK开发环境搭建(软件准备篇)
  • 详细解释浏览器是如何渲染页面的?
  • 银行数据开发日常2
  • Redis客户端下载使用
  • AI调试工具有哪些?
  • 李宏毅NLP-5-RNNTNeural TransducerMoChA
  • 加一:从简单问题到复杂边界的深度思考
  • fragment 异常 InstantiationException
  • Python语法系列博客 · 第6期[特殊字符] 文件读写与文本处理基础
  • JAVA:Spring Boot 集成 Caffeine 实现本地缓存的技术博客
  • 使用Redis5.X部署一个集群
  • 【PCIE配置空间】
  • 【FFmpeg从入门到精通】第三章-FFmpeg转封装
  • Android TTY设备调用流程和简单分析
  • verilog float mult
  • 九方前端面试
  • Kubernetes控制平面组件:API Server详解(二)
  • TDOA解算——牛顿迭代法|以4个基站的三维空间下TDOA定位为背景,使用牛顿迭代法解算。附完整代码,订阅专栏后可复制粘贴
  • 前端面试宝典---参数解构+默认值的面试题
  • 2025.04.19【Spider】| 蜘蛛图绘制技巧精解
  • 杨校老师课堂之C++入门练习题梳理
  • 大数据建模与评估
  • 【技术派后端篇】技术派中的白名单机制:基于Redis的Set实现
  • 备份jenkins
  • mysql控制单表数据存储及单实例表创建