C# License

C# License第一步:生成一组公钥和私钥,公钥用于你发布程序,私钥属于注册码生成。using(RSACryptoServiceProviderrsa=new RSACryptoServiceProvider())  {  stringpubkey=rsa.ToXmlString(false);  //公钥 stringprikey=rsa.ToXmlString(t

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
第一步:生成一组公钥和私钥,公钥用于你发布程序,私钥属于注册码生成。


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.net/164387.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月26日 上午9:36
下一篇 2022年7月26日 上午9:46


相关推荐

  • 推荐系统FM & FFM算法解读与实践

    推荐系统FM & FFM算法解读与实践在推荐系统和计算广告业务中,点击率CTR(click-throughrate)和转化率CVR(conversionrate)是衡量流量转化的两个关键指标。准确的估计CTR、CVR对于提高流量的价值,增加广告及电商收入有重要的指导作用。业界常用的方法有人工特征工程+LR(LogisticRegression)、GBDT(GradientBoostingDecisionTree)+…

    2022年6月11日
    39
  • 参数化查询原理

    参数化查询原理机房重构敲组合查询时 会遇到多个操作符 因为之前在使用参数化查询时只要遇到给数据库赋值时就使用参数 光知道这样能防止 SQL 注入 直到如今才知道它为什么能防止 SQL 注入 索性就把操作符也用成参数 但这时就报 语法错误 了 可是解决了很长时间 老以为是 sql 语句写错了 自我认为是那种丢掉一个空格或引号之类的错误 其实是没真正理解之前听到到 防 SQL 注入 的原理 或是说为什么能 防

    2025年11月27日
    8
  • java全局变量的定义和声明_定义全局变量的方法

    java全局变量的定义和声明_定义全局变量的方法JAVA全局变量(或称成员变量)可分两种,一种是静态变量,另一种是实例变量,即在类体中定义的变量,有三点得注意:一、成员变量不能在类体中先声明(定义)后赋值,但静态变量可以先在类体中声明,然后在方法中赋值(当然实例变量是不行的);1)如以下程序会出问题:publicclassTest{staticinta;//在类体中声明整型静态变量a。intb;

    2022年8月21日
    12
  • 一份较心新的端口列表[通俗易懂]

    一份较心新的端口列表[通俗易懂]PORTNUMBERS(lastupdated18November2004)Theportnumbersaredividedintothreeranges:theWellKnownPorts,theRegisteredPorts,andtheDynamicand/orPrivatePorts.TheWellKnown

    2025年12月4日
    6
  • 文本分类算法之–贝叶斯分类算法的实现Java版本

    文本分类算法之–贝叶斯分类算法的实现Java版本package com.vista;import java.io.IOException;      import jeasy.analysis.MMAnalyzer;/*** 中文分词器*/public class ChineseSpliter {    /**    * 对给定的文本进行中文分词    * @param text 给定的文本   

    2022年5月30日
    32
  • 永磁同步电机矢量控制(三)——电流环转速环 PI 参数整定

    永磁同步电机矢量控制(三)——电流环转速环 PI 参数整定3PI 控制器参数整定 3 1 从 PMSM 电机的数学模型出发 dq 轴电压方程 dq 轴轴磁链方程 dq 轴转矩方程 dq 轴运动方程 分析上述方程 如果我们能够控制 id 0 那么电压方程就可简化为 转矩方程为 运动方程为 以上式中 f 是永磁体

    2026年3月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号