C# License
大家好,又见面了,我是你们的朋友全栈君。 第一步:生成一组公钥和私钥,公钥用于你发布程序,私钥属于注册码生成。 using(RSACryptoServiceProvider rsa = new RSACryptoServiceProvider()) { string pubkey = rsa.ToXmlString(false); // 公钥 string prikey = rsa.ToXmlString(true); // 私钥 //如果是webForm就Response.Write(pubkey + ”<br/>” + prikey); 下 //如果是winForm就MessageBox.Show(“公钥:” + pubkey + “\r\n私钥:” + prikey); 下
}
第二步:取得机器硬件编码。我选用CUP的编号。
public string GetCpuId() { ManagementClass mc = new ManagementClass(“Win32_Processor”); ManagementObjectCollection moc = mc.GetInstances(); String strCpuID = null; foreach (ManagementObject mo in moc) { strCpuID = mo.Properties[“ProcessorId”].Value.ToString(); break; } return strCpuID; }
第三步:编写注册码生成WinForm程序,使用CPU的编号来生成注册码,当然你也可以用 WebForm来写。 using(RSACryptoServiceProvider rsa = new RSACryptoServiceProvider()) { rsa.FromXmlString(“私钥”); RSAPKCS1SignatureFormatter f = new RSAPKCS1SignatureFormatter(rsa); // 加密对象 f.SetHashAlgorithm(“SHA1”); byte[] source = System.Text.ASCIIEncoding.ASCII.GetBytes(“CPU的编号”); SHA1Managed sha = new SHA1Managed(); byte[] result = sha.ComputeHash(source); byte[] b = f.CreateSignature(result); msg.Text = Convert.ToBase64String(b); //这里就得到了string形式的注册码 //再接下来你可以把生成的注册码保存成license.lic文件,license.lic文件也没什么特别的格式就是相当于把注册吗保存到一个txt文件中,无非这个txt文件的后缀改成了lic,你要高兴也可保存成其它多种格式。 //也可以保存在注册表中或是web.config中,总之能让你的发布的应用程序能读的到就行。 }
第四步:在发布的程序相关地方添加对注册码有效性的验证。如添加在程序启动的时候,程序执行特定操作的时候等等,总之看你的需要做有效性的验证。 //相关注册码获取代码…… //以下代码是发布程序使用公钥对注册码进行验证 using(RSACryptoServiceProvider rsa = new RSACryptoServiceProvider()) { rsa.FromXmlString(“公钥”); RSAPKCS1SignatureDeformatter f = new RSAPKCS1SignatureDeformatter(rsa); f.SetHashAlgorithm(“SHA1”); byte[] key = Convert.FromBase64String(“注册码”); SHA1Managed sha = new SHA1Managed(); byte[] name = sha.ComputeHash(ASCIIEncoding.ASCII.GetBytes(“CPU编号”)); if(f.VerifySignature(name,key)) msg.Text = “验证成功”; //可以return true;等方式返回相应的状态 else msg.Text = “不成功”; }
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/164387.html原文链接:https://javaforall.cn
相关文章
- C#设计模式——(创建型-工厂方法设计模式)
- C#网络编程(Socket编程)「建议收藏」
- 利用#ZipLib,完成C#下的解压缩「建议收藏」
- c# mysql executenonquery_C#与数据库访问技术之ExecuteNonQuery方法
- C#-调用浏览器打开网页
- C#-改变控件样式
- C#-ToolTIp和Popup简单使用
- 利用C#远程存取Access数据库
- 比较简单的将数据信息导入wrod文档方案(C#forword)
- c#重写TabControl控件实现关闭按钮的方法
- 解析C#中@符号的几种使用方法详解
- c#生成图片缩略图的类(2种实现思路)
- C#操作config文件的具体方法
- c#中的interfaceabstract与virtual介绍
- c#文件操作示例带详细注释
- C#Form自定义光标的简单实现
- js模拟C#中List的简单实例
- C#实现随鼠标移动窗体实例
- c#+JQurey实现获取radio和checkbox的值
- C#winform编程中响应回车键的实现代码