欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 幼教 > C#实现的一个简单的软件保护方案

C#实现的一个简单的软件保护方案

2025/9/25 19:44:24 来源:https://blog.csdn.net/zhoudelun/article/details/146361781  浏览:    关键词:C#实现的一个简单的软件保护方案

生成加密密钥、加密和解密数据、生成许可证和验证许可证的功能

using System;
using System.Security.Cryptography;
using System.Text;// 使用Aes类生成对称加密密钥:
public static byte[] GenerateKey()
{using (Aes aes = Aes.Create()){aes.GenerateKey();return aes.Key;}
}// 使用Aes类进行数据加密和解密:
public static byte[] EncryptData(byte[] key, string data)
{using (Aes aes = Aes.Create()){aes.Key = key;aes.GenerateIV();ICryptoTransform encryptor = aes.CreateEncryptor(aes.Key, aes.IV);using (var ms = new System.IO.MemoryStream()){ms.Write(aes.IV, 0, aes.IV.Length);using (var cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write)){using (var sw = new System.IO.StreamWriter(cs)){sw.Write(data);}}return ms.ToArray();}}
}public static string DecryptData(byte[] key, byte[] encryptedData)
{using (Aes aes = Aes.Create()){aes.Key = key;byte[] iv = new byte[aes.BlockSize / 8];Array.Copy(encryptedData, iv, iv.Length);ICryptoTransform decryptor = aes.CreateDecryptor(aes.Key, iv);using (var ms = new System.IO.MemoryStream(encryptedData, iv.Length, encryptedData.Length - iv.Length)){using (var cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read)){using (var sr = new System.IO.StreamReader(cs)){return sr.ReadToEnd();}}}}
}// 生成许可证文件,包含用户信息和加密密钥的哈希值:
public static string GenerateLicense(byte[] key, string userInfo)
{string licenseData = $"{userInfo}|{Convert.ToBase64String(key)}";string licenseHash = ComputeSha256Hash(licenseData);return Convert.ToBase64String(Encoding.UTF8.GetBytes($"{licenseData}|{licenseHash}"));
}private static string ComputeSha256Hash(string rawData)
{using (SHA256 sha256Hash = SHA256.Create()){byte[] bytes = sha256Hash.ComputeHash(Encoding.UTF8.GetBytes(rawData));StringBuilder builder = new StringBuilder();for (int i = 0; i < bytes.Length; i++){builder.Append(bytes[i].ToString("x2"));}return builder.ToString();}
}// 验证许可证的合法性:
public static bool VerifyLicense(string license, string userInfo)
{string licenseData = Encoding.UTF8.GetString(Convert.FromBase64String(license));string[] licenseParts = licenseData.Split('|');if (licenseParts.Length != 3){return false;}string licenseUserInfo = licenseParts[0];string licenseKey = licenseParts[1];string licenseHash = licenseParts[2];if (licenseUserInfo != userInfo){return false;}string expectedHash = ComputeSha256Hash($"{licenseUserInfo}|{licenseKey}");return expectedHash == licenseHash;
}// 示例代码展示如何生成加密密钥、加密和解密数据、生成许可证和验证许可证:
public class Program
{public static void Main(){string userInfo = "user@example.com";byte[] key = GenerateKey();string license = GenerateLicense(key, userInfo);Console.WriteLine("生成的许可证: " + license);Console.WriteLine("许可证验证结果: " + VerifyLicense(license, userInfo));// 加密和解密数据string data = "Hello, World!";byte[] encryptedData = EncryptData(key, data);Console.WriteLine("加密数据: " + Convert.ToBase64String(encryptedData));string decryptedData = DecryptData(key, encryptedData);Console.WriteLine("解密数据: " + decryptedData);}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词