SM3加密应用

何为sm3加密?

SM3是由中国国家密码管理局设计的一种密码杂凑函数,类似于SHA-256和MD5等国际标准的散列算法。SM3算法是中国国家标准《GB/T 32905-2016 信息安全技术 SM3密码杂凑算法》的一部分,用于数字签名和数据完整性验证等领域。

SM3算法的特点

  1. 输出长度:SM3算法的输出散列值长度为256位(32字节)。
  2. 安全性:SM3设计上具有较高的安全性,抵御已知的各种攻击,如碰撞攻击和长度扩展攻击等。
  3. 性能:SM3的性能与SHA-256相当,在大多数现代计算机平台上表现良好。

使用SM3加密

SM3本质上是一种杂凑函数,不是加密算法。因此,使用SM3的目的是生成固定长度的散列值,而不是加密数据以供后续解密。典型应用包括:

      • 数据完整性校验
      • 数字签名
      • 密码验证

如何确认sm3算法是否匹配及准确可以使用一下验证网站来验证

可以使用此网站来进行验证https://config.net.cn/tools/SM3.html

如何在C#中实现呢?

由于.NET框架中没有内置SM3实现,你可以使用第三方库,比如BouncyCastle库来实现SM3。

首先,需要安装BouncyCastle库。可以使用NuGet包管理器安装:

或者点击项目鼠标右键如下操作:

点安装,完成库的引用。

以下是C#中实现的一个类:

public class SM3Help
{
public static string CalculateSM3Hash(string input)
{
// 创建SM3摘要实例
IDigest digest = new SM3Digest();

// 将输入字符串转换为字节数组
byte[] inputBytes = Encoding.UTF8.GetBytes(input);

// 更新摘要数据
digest.BlockUpdate(inputBytes, 0, inputBytes.Length);

// 获取摘要大小并创建一个足够大的字节数组来存储哈希值
byte[] hash = new byte[digest.GetDigestSize()];

// 完成哈希计算并将结果存储在hash数组中
digest.DoFinal(hash, 0);

// 将哈希值转换为十六进制字符串并返回
return Hex.ToHexString(hash);

}
public static string GenerateSm3Hash(string input)
{
try
{
byte[] inputBytes = Encoding.UTF8.GetBytes(input);

byte[] hashBytes = SM3.ComputeHash(inputBytes);

return BitConverter.ToString(hashBytes).Replace("-", "").ToLower();
}
catch (Exception ex)
{
Console.WriteLine("GenerateSm3Hash error: " + ex.Message);
throw;
}

}
}

如何实现sm3加密的更多相关文章

  1. java sm3加密算法

      java sm3加密算法实现 CreationTime--2018年7月13日09点28分 Author:Marydon 1.准备工作 所需jar包: bcprov-jdk15on-1.59.ja ...

  2. go-dongle 0.2.0 版本发布了,一个轻量级、语义化的 golang 编码解码、加密解密库

    dongle 是一个轻量级.语义化.对开发者友好的 Golang 编码解码和加密解密库 Dongle 已被 awesome-go 收录, 如果您觉得不错,请给个 star 吧 github.com/g ...

  3. 《基于Arm实验箱的国密算法应用》课程设计 结题报告

    <基于Arm实验箱的国密算法应用>课程设计 结题报告 小组成员姓名:20155206赵飞 20155220吴思其 20155234昝昕明 指导教师:娄嘉鹏 设计方案 题目要求:基于Arm实 ...

  4. 2015520吴思其 基于《Arm试验箱的国密算法应用》课程设计个人报告

    20155200吴思其 基于<Arm试验箱的国密算法应用>课程设计个人报告 课程设计中承担的任务 完成试验箱测试功能4,5,6以及SM3加密实验的实现 测试四 GPIO0按键中断实验 实验 ...

  5. WebService之Spring+CXF整合示例

    一.Spring+CXF整合示例 WebService是一种跨编程语言.跨操作系统平台的远程调用技术,它是指一个应用程序向外界暴露一个能通过Web调用的API接口,我们把调用这个WebService的 ...

  6. gmlib密码算法库

    gmlib密码算法库 一.gmlib密码算法库简介 支持国密 SM4/AES-ECB/CBC/GCM,SM3,SM2签名/加密,ZUC算法 的密码库,文档页面GMLib Docs ,项目地址 gmli ...

  7. crypto-gmsm国密算法库

    crypto-gmsm国密算法库 一.开发背景 crypto-gmsm国密算法库是国密商密算法(SM2,SM3,SM4)工具类封装,国产密码算法(国密算法)是指国家密码局认定的国产商用密码算法,目前主 ...

  8. sm-crypto密码算法库

    一.环境配置 在之前的node.js库配置中,我们已经配置好了node和npm,再次检查配置情况 node -v npm -v npm install --save miniprogram-sm-cr ...

  9. AES SHA-1 SM3 MD5

    AES是美国国家标准技术研究所NIST旨在代替DES的21世纪的加密标准. 输入:128bit 的消息分组 输出:128bit 的密文分组 密钥长度及圈数 128 10 192 12 256 14 消 ...

  10. SM3杂凑算法Python语言实现——第三部分

    SM3杂凑算法实现--第三部分 一.SM3 密码概述        我们首先把需要用到的算法呈现出来,最后我们再考虑如何集合为一个库的方法,这一部分我们就开始编写一个新的算法:国家商用密码标准SM3密 ...

随机推荐

  1. 重新整理数据结构与算法(c#)—— 算法套路二分法[二十四]

    前言 前面写过二分法使用的是递归手法,然后该节才有不递归的方式执行. 二分法的时间复杂度为log(2)n.空间复杂度为:1. 正文 代码: static void Main(string[] args ...

  2. mm系列权重文件瘦身

    瘦身脚本: (会在resnet50.pth文件的同级目录下生成一个resnet50_thin.pth) import os import torch root_dir = os.getcwd() de ...

  3. 实训篇-Html-列表练习

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  4. 调用App Store Connect Api

    对iOS的证书.描述文件.账号.设备等管理,之前都去苹果开发者中心操作,官网上操作也比较繁杂,想搞一些自动化之类的,更是麻烦,有时候官网都打不开-- 其实苹果还提供里一套API接口,创建证书.创建账号 ...

  5. 解析 RocketMQ 业务消息--“顺序消息”

    简介: 本篇将继续业务消息集成的场景,从功能原理.应用案例.最佳实践以及实战等角度介绍 RocketMQ 的顺序消息功能. 作者:绍舒   引言 Apache RocketMQ 诞生至今,历经十余年大 ...

  6. Databricks 企业版 Spark&Delta Lake 引擎助力 Lakehouse 高效访问

    ​简介:本文介绍了Databricks企业版Delta Lake的性能优势,借助这些特性能够大幅提升Spark SQL的查询性能,加快Delta表的查询速度. 作者: 李锦桂(锦犀) 阿里云开源大数据 ...

  7. Raft 共识算法3-日志复制

    Raft 共识算法3-日志复制 Raft算法中译版地址:https://object.redisant.com/doc/raft中译版-2023年4月23日.pdf 英原论文地址:https://ra ...

  8. ESP32 使用LVGL案例

    一.完成LVGL移植 在使用LVGL提供的测试案例时,需要先移植LVGL,不明白的小伙伴看我之前的笔记 esp-idf 移植 lvgl8.3.3. 移植完成后的项目文件如下图所示 二.添加需要的测试案 ...

  9. java 高并发下超购问题解决

    //@desc:java 高并发下锁机制初探 //@desc:码字不宜,转载请注明出处 //@author:张慧源  <turing_zhy@163.com> //@date:2021/1 ...

  10. Educational Codeforces Round 162 (Rated for Div. 2) E

    E:Link 枚举路径两端的颜色 \(k\). 令 \(g[x]\) 表示满足以下条件的点 \(y\) 数量. $ y \in subtree[x]$ \(col[y] = k\) \(y\) 到 \ ...