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

国家商用密码算法——SM4、SM7、SM9

1、SM4

  • SM4 跟 SM1 类似,是我国自主设计的分组对称密码算法,用于替代DES/AES等国际算法。SM4 算法与 AES 算法具有相同的密钥长度、分组长度,都是128bit。
    • SM1参考:国家商用密码算法——SM1、SM2、SM3-CSDN博客
  • SM4的加密过程:SM4的加密过程基于Feistel网络结构,经过32轮的迭代运算来加密128位明文。每一轮的操作包括:
    • 密钥调度:将128位的密钥通过密钥扩展生成32个子密钥,每个子密钥用于加密过程中的一轮运算。
    • 非线性变换:在每一轮中,对输入数据块进行非线性变换,通过S盒(Substitution box)实现。S盒提供了高度的随机性和复杂性,增强了算法的安全性。
      • 【注】S盒(一个预先定义的查找表)是一种在密码学中广泛使用的非线性变换机制,作用是将输入的比特序列通过查表的方式转换成不同的输出比特序列,从而引入混淆性和复杂性。
    • 线性变换:在每一轮的运算中,除了非线性变换,SM4还包含线性变换,用于混淆和扩散数据块中的比特位,进一步提高加密的强度。

2、SM7

  • SM7是一种中国国家密码管理局设计的分组对称加密算法未公开
  • SM7 适用于非接IC卡应用包括身份识别类应用(门禁卡、工作证、参赛证),票务类应用(大型赛事门票、展会门票),支付与通卡类应用(积分消费卡、校园一卡通、企业一卡通、公交一卡通)。

3、SM9

  • SM9 是中国国家密码管理局发布的基于身份的密码算法(Identity-Based Cryptography, IBC)。它基于椭圆曲线密码学,主要用于实现基于身份的公钥密码系统。
    • 基于身份的加密:用户的公钥可以直接由其身份(如邮箱地址、手机号等)推导出,不再需要复杂的公钥基础设施(PKI)。这简化了公钥的分发和管理流程。
    • 椭圆曲线密码学:SM9基于椭圆曲线密码学中的双线性对(bilinear pairing),这一点与传统的RSA或ECC公钥体系有所不同。双线性对是一种数学结构,能够实现复杂的密码学运算,如基于身份的加密和签名。
  • SM9包含了一整套密码机制,包括数字签名、加密、密钥交换等,适用于身份认证和密钥管理等应用场景。
    • 数字签名:允许用户使用其身份进行数字签名,确保数据的完整性和真实性。
    • 身份加密:允许用户使用接收者的身份进行加密,无需直接获取对方的公钥。
    • 密钥交换:两方通过各自的身份生成密钥,实现安全的密钥交换。
  • 工作原理:
    • 主私钥生成:系统由一个信任的第三方(称为主密钥生成中心,Key Generation Center, KGC)生成一个主私钥(KGC持有)和对应的主公钥(公开)
    • 用户私钥生成:每个用户私钥由第三方根据主私钥和用户身份信息生成。该身份信息可以是用户的邮箱地址、手机号、身份证号等。用户身份信息充当用户公钥
    • 加密和解密:发送方使用接收方的身份(用户公钥)主公钥进行加密;接收方使用自己的用户私钥解密。
    • 签名和验证:用户也可以使用用户私钥对信息进行签名;验证方可以直接使用发送者的身份主公钥验证签名的真实性。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 一区霜冰算法+双向深度学习模型+注意力机制!RIME-BiTCN-BiGRU-Attention
  • C语言 ——— 学习并使用条件编译指令
  • 【佳学基因检测】如何使用Letsencrypt对一个网站进行加密?
  • 【Python常用库_1】网络安全清洁专家——Bleach
  • TiDB-从0到1【完结】
  • 细致刨析JDBC ① 基础篇
  • Windows10 如何配置python IDE
  • Apple Intelligence深夜炸场!苹果发布4颗自研芯片,iPhone/iWatch/AirPods大升级
  • 专业级PDF编辑神器大比拼:效率与功能并重的选择
  • 【日常记录-Java】SpringBoot中使用无返回值的异步方法
  • Docker基础-Docker Compose使用
  • 大数据与人工智能:脑科学与人工神经网络ANN
  • 随手记:uniapp小程序登录方式和小程序使用验证码登录
  • Flutter动画—涟漪效果
  • arcgis Feature Server的新增、更新、删除
  • 10个确保微服务与容器安全的最佳实践
  • CSS中外联样式表代表的含义
  • Docker: 容器互访的三种方式
  • express + mock 让前后台并行开发
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • JavaScript DOM 10 - 滚动
  • Puppeteer:浏览器控制器
  • Vue2.x学习三:事件处理生命周期钩子
  • 产品三维模型在线预览
  • 关于使用markdown的方法(引自CSDN教程)
  • 计算机在识别图像时“看到”了什么?
  • 解决iview多表头动态更改列元素发生的错误
  • 通过调用文摘列表API获取文摘
  • ​MPV,汽车产品里一个特殊品类的进化过程
  • ​低代码平台的核心价值与优势
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • # C++之functional库用法整理
  • # Kafka_深入探秘者(2):kafka 生产者
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (1)(1.13) SiK无线电高级配置(五)
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (MATLAB)第五章-矩阵运算
  • (Python) SOAP Web Service (HTTP POST)
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (附源码)计算机毕业设计高校学生选课系统
  • (十)T检验-第一部分
  • (文章复现)基于主从博弈的售电商多元零售套餐设计与多级市场购电策略
  • (一)Docker基本介绍
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • (转)Sublime Text3配置Lua运行环境
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • .NET 设计模式初探
  • .Net 中Partitioner static与dynamic的性能对比
  • .net反编译工具
  • .Net组件程序设计之线程、并发管理(一)