小魔女 发表于 2015-1-16 22:47:38

ASP.NET网页编程之利用.NET自带的功能制造复杂的注册码

归根到底,Java跨平台可以,但是要重新编写代码,否则还分什么J2EE/J2SE/J2ME呢!加密能够匡助回护数据不被检察和修正,而且能够匡助在本不平安的信道上供应平安的通讯体例。比方,可使用加密算法对数据举行加密,在加密形态下传输数据,然后由预定的吸收方对数据举行解密。假如第三方截获了加密的数据,解密数据是很坚苦的。
为了到达这些目标,您可使用算法和常规的组合(称作加密基元)来创立加密计划。包含私钥加密(对称加密)、公钥加密(不合错误称加密)、加密署名和加密哈希。
我们利用公钥加密(不合错误称加密)来完成注册码的算法。
公钥加密利用一个必需对未经受权的用户保密的私钥和一个能够对任何人公然的公钥。公钥和私钥都在数学上相干联;用公钥加密的数据只能用私钥解密,而用私钥署名的数据只能用公钥考证。
关于注册码来讲,我们利用私钥来对一个字符串(用户名)署名,然后利用公钥对这个署名(注册码)举行考证。因为公钥只能用于考证,以是我们能够宁神把公钥分收回往;私钥匙用来举行署名的,以是私钥匙要保留在开辟者手中的。如许就到达了注册认证的目标。今朝利用“用户名、注册码”形式注册的软件都应当是利用这一手艺。
起首我们天生本人要利用的一个公钥和私钥。
PrivatersaAsNewSecurity.Cryptography.RSACryptoServiceProvider
RSACryptoServiceProvider类供应RSA算法的完成实行不合错误称加密息争密。经由过程ToXMLString就能够天生我们必要的公钥和私钥。
rsa.ToXmlString(False)
rsa.ToXmlString(True)
当参数为False的时分,仅天生公钥;True的时分将会把公钥和私钥全体天生。我们一样平常经由过程ToXmlString(False)失掉一个公钥字符串;经由过程ToXmlString(True)失掉一个私钥字符串(固然个中含有公钥)。我们能够将这两个密钥保留在本机下面,经由过程字符串常量界说并利用。也就是说我们的注册信息将利用独一的公钥和私钥。
然后我们经由过程公钥和私钥对指定的字符串举行署名。
rsa.FromXmlString(PRIVATE_KEY)
DimfAsNewSecurity.Cryptography.RSAPKCS1SignatureFormatter(rsa)
f.SetHashAlgorithm("SHA1")
Dimsource()AsByte=System.Text.ASCIIEncoding.ASCII.GetBytes(UID)
DimshaAsNewSecurity.Cryptography.SHA1Managed
Dimresult()AsByte=sha.ComputeHash(source)
Dimregkey()AsByte=f.CreateSignature(result)
SerialNumber=Convert.ToBase64String(regkey)
经由过程方才失掉的私钥从头初始化rsa工具,然后经由过程RSAPKCS1SignatureFormatter类来举行署名。我们将输出的字符串转化成字节数组(我们这里默许用户名只能由ASCII字符构成),经由过程SHA1哈西算法盘算其哈希值。再利用CreateSignature办法将失掉的哈西值举行署名。最初我们将失掉的字节数组转化成字符串作为注册码。这就是天生注册码的历程。我们能够反复利用这一段程序对分歧的用户名举行署名,从而失掉与之对应的分歧注册码。
最初我们把方才失掉的用户名和注册码举行考证。
rsa.FromXmlString(PUBLIC_KEY)
DimfAsNewSecurity.Cryptography.RSAPKCS1SignatureDeformatter(rsa)
f.SetHashAlgorithm("SHA1")
Dimkey()AsByte=Convert.FromBase64String(SerialNumber)
DimshaAsNewSecurity.Cryptography.SHA1Managed
Dimname()AsByte=sha.ComputeHash(System.Text.ASCIIEncoding.ASCII.GetBytes(UID))
Result=f.VerifySignature(name,key)
这一次我们利用公钥来初始化rsa工具,然后经由过程RSAPKCS1SignatureDeformatter类来考证署名。我们将失掉的注册码反向转化为字节数组;并将用户名举行哈西盘算失掉哈西值。最初经由过程VerifySignature举行考证。

从下面的程序能够看出,天生注册码必要私钥(私钥内附带公钥信息),并且能够天生恣意多的用户名、注册码对。而经由过程公钥,我们只能举行考证而不克不及天生。以是公钥能够宁神的发放给一切的用户举行考证,而私钥却不克不及。以是在刊行的版本中能够附带公钥和考证算法。由于即使用户失掉了公钥和考证算法也没法复杂的破解。
如今收集下流行的注册机,很年夜水平上是破解了软件的私钥,从而到达无穷制的天生所必要的注册信息。可是假如用户反编译你的产物,而且修正了两头代码,那末它将会绕过注册的判别逻辑。这就不是这一篇所能办理的成绩了。由于便是你利用了WebService手艺举行在线激活或注册,仍是能够经由过程收集侦听来剖析服务器的信息,摹拟一个假的服务器来举行的。
我之所以想学。NET,是因为一直觉的BILLGATES好厉害,希望有一天能去微软,虽然现在还距离遥远,呵呵:)

若天明 发表于 2015-1-19 23:49:38

Asp.net:首先来说,Asp.net和Asp没什么关系,看着像是升级版本什么的,其实没什么联系。Asp是脚本编程,用的是ASP语言,而ASP.net用的是C#语言,完全不同的东西。

再见西城 发表于 2015-1-26 08:04:57

碰到复杂点的问题都不知道能不能解决,现在有点实力的公司都选择自已在开源的基础上做开发。但没听说过有人在IIS上做改进的,windows、sqlserver集群方面的应用也很少见。

小女巫 发表于 2015-2-4 13:36:57

最强的技术支持WebService,而且有.NET的所有library做后盾。而且ASP.NET在.NET3.5中还有微软专门为AJAX开发的功能--ASP.NETAJAX。

老尸 发表于 2015-2-9 23:56:06

ASP是把代码交给VBScript解释器或Jscript解释器来解释,当然速度没有编译过的程序快了。

再现理想 发表于 2015-2-28 09:17:46

大哥拜托,Java在95年就出来了,微软垄断个妹啊,服务器市场微软完全是后后来者,当年都是Unix的市场,现在被WindowsServer和Linux抢下大片,包括数据库也一样。

第二个灵魂 发表于 2015-3-9 22:06:34

ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象。

海妖 发表于 2015-3-17 02:09:02

最强的技术支持WebService,而且有.NET的所有library做后盾。而且ASP.NET在.NET3.5中还有微软专门为AJAX开发的功能--ASP.NETAJAX。

小妖女 发表于 2015-3-23 15:40:39

这也就是最近几年来随着各种新的后台技术的诞生,CGI应用在Internet上越来越少的原因。CGI方式不适合大访问量的应用。
页: [1]
查看完整版本: ASP.NET网页编程之利用.NET自带的功效制造复杂的注册码