using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
public class SM4Encryption
{
// 密钥和初始向量(IV),需要根据实际情况设置
private static readonly byte[] key = Encoding.UTF8.GetBytes("0123456789abcdef"); // 16字节密钥
private static readonly byte[] iv = Encoding.UTF8.GetBytes("fedcba9876543210"); // 16字节IV
public static string Encrypt(string plainText)
{
using (AesCryptoServiceProvider aesAlg = new AesCryptoServiceProvider())
{
aesAlg.Key = key;
aesAlg.IV = iv;
aesAlg.Mode = CipherMode.CBC;
aesAlg.Padding = PaddingMode.PKCS7;
ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);
using (MemoryStream msEncrypt = new MemoryStream())
{
using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
{
using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
{
swEncrypt.Write(plainText);
}
return Convert.ToBase64String(msEncrypt.ToArray());
}
}
}
}
public static string Decrypt(string cipherText)
{
using (AesCryptoServiceProvider aesAlg = new AesCryptoServiceProvider())
{
aesAlg.Key = key;
aesAlg.IV = iv;
aesAlg.Mode = CipherMode.CBC;
aesAlg.Padding = PaddingMode.PKCS7;
ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV);
using (MemoryStream msDecrypt = new MemoryStream(Convert.FromBase64String(cipherText)))
{
using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
{
using (StreamReader srDecrypt = new StreamReader(csDecrypt))
{
return srDecrypt.ReadToEnd();
}
}
}
}
}
}
// 示例用法
class Program
{
static void Main()
{
string original = "Hello World!";
Console.WriteLine("Original: " + original);
string encrypted = SM4Encryption.Encrypt(original);
Console.WriteLine("Encrypted: " + encrypted);
string decrypted = SM4Encryption.Decrypt(encrypted);
Console.WriteLine("Decrypted: " + decrypted);
}
}
key
和 iv
是用于加密和解密的密钥和初始向量,必须是16字节长。你需要根据实际情况设置这些值。Encrypt
和 Decrypt
方法进行加密和解密操作。请注意,C# 中没有直接支持 SM4 加密的内置类库,上述代码使用的是 AES 算法作为替代。如果你需要使用 SM4 算法,请确保你有合适的第三方库或实现。
上一篇:c# 字符串转int
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站