国密加密算法-SM2、SM3、SM4
国密加密
加密类型 | 加密算法 | 应用范围 | 对应国际加密算法 | 说明 |
---|---|---|---|---|
非对称加密 | SM2 | 身份认证、数字签名、密码交换、256位椭圆曲线 | RSA、RSA4096 | 需要生成秘钥对(公钥和私钥 |
对称加密算法 | SM1 | 128位数字加密、算法不公开、仅以IP核的形式存在于芯片中。智能IC卡、智能密码钥匙、加密卡、加密机 | DES、3DES、AES(128)、AES192、AES256 | AES是取代DES的算法 |
SM4 | 128位数据加密、相当于AES(128) | |||
完整性运算 | SM3 | 256位数据摘要计算,相当于SHA256 | SHA1、SHA-256、SHA-384、SHA-512 |
-
引用 KYSharp.SM
-
示例代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using KYSharp.SM;
namespace ConsoleApp6
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("************* SM2 *************");
//公钥
string publicKey = "";
//私钥
string privateKey = "";
//生成公钥和私钥
SM2Utils.GenerateKeyPair(out publicKey, out privateKey);
Console.WriteLine("加密明文:" + "000000");
Console.WriteLine("publicKey:"+publicKey);
//开始加密
string cliperText = SM2Utils.Encrypt(publicKey, "000000");
Console.WriteLine("密文:" + cliperText);
Console.WriteLine("privateKey:" + privateKey);
//解密
string plainText = SM2Utils.Decrypt(privateKey, cliperText);
Console.WriteLine("明文:" + plainText);
Console.WriteLine();
Console.WriteLine("************** SM3 ***************");
SM3JM();
Console.WriteLine("************ SM4 ***************");
SM4JM();
Console.ReadKey();
}
private static void SM3JM()
{
SM3 bo = new SM3();
string s = "asdfasde";
Console.WriteLine("明文:"+s);
string str = bo.Encrypt(s);
Console.WriteLine("密文:" + str);
Console.WriteLine("长度:" + str.Length);
Console.WriteLine("开始解密");
string str1 = bo.Encrypt(s);
Console.WriteLine(str1);
}
private static void SM4JM()
{
string plainText = "erefei中国人民god";
Console.WriteLine("明文:"+plainText);
SM4Utils sm4 = new SM4Utils();
sm4.secretKey = "JeF8U9wHFOMfs2Y8";
sm4.hexString = false;
Console.WriteLine("ECB模式");
string cliperText = sm4.Encrypt_ECB(plainText);
Console.WriteLine("密文:"+cliperText);
Console.WriteLine();
string ks=sm4.Decrypt_ECB(cliperText);
Console.WriteLine("解密:"+ks);
Console.WriteLine();
Console.WriteLine("CBC模式");
string s = "UISwD9fW6cFh9SNS";
sm4.iv = s;
cliperText = sm4.Encrypt_CBC(plainText);
Console.WriteLine("密文:"+cliperText);
Console.WriteLine();
string mw = sm4.Decrypt_CBC(cliperText);
Console.WriteLine("解密:"+mw);
Console.WriteLine();
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)