请问下我做了WinForm程序,如果我想授权的话 我应该如何做?如何指定我的程序对方是否可用

请问下我做了WinForm程序,如果我想授权的话 我应该如何做?如何指定我的程序对方是否可用,第1张

第一步:生成一组公钥和私钥,公钥用于你发布程序,私钥属于注册码生成。view plaincopy to clipboardprint?

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)下

}

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的编号。view plaincopy to clipboardprint?

/// <summary>

/// 获取CPU编号

/// </summary>

/// <returns></returns>

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

}

/// <summary>

/// 获取CPU编号

/// </summary>

/// <returns></returns>

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程序,使用CUP的编号来生成注册码,当然你也可以用 WebForm来写。view plaincopy to clipboardprint?

using(RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())

{

rsa.FromXmlString(“私钥”)

// 加密对象

RSAPKCS1SignatureFormatter f = new RSAPKCS1SignatureFormatter(rsa)

f.SetHashAlgorithm("SHA1")

byte[] source = System.Text.ASCIIEncoding.ASCII.GetBytes(“CUP的编号”)

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(“私钥”)

// 加密对象

RSAPKCS1SignatureFormatter f = new RSAPKCS1SignatureFormatter(rsa)

f.SetHashAlgorithm("SHA1")

byte[] source = System.Text.ASCIIEncoding.ASCII.GetBytes(“CUP的编号”)

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中,总之能让你的发布的应用程序能读的到就行。

}第四步:在发布的程序相关地方添加对注册码有效性的验证。如添加在程序启动的时候,程序执行特定 *** 作的时候等等,总之看你的需要做有效性的验证。view plaincopy to clipboardprint?

//相关注册码获取代码……

//以下代码是发布程序使用公钥对注册码进行验证

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(“注册码”))

if(f.VerifySignature(name,key))

msg.Text = "验证成功"//可以return true等方式返回相应的状态

else

msg.Text = "不成功"

}

pds是原理图文件,用gdsview1.0.0.94

软件可以打开伍罩搭,photoshop也可腔拿以打开。

photoshop

保存的时候可以发布成闷亮html

所以说,pds文件是用gdsview或photoshop可以打开的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12425264.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存