教程中国
PHOTOSHOP CS9.0中文版 MAYA 8.5 FOR WINDOWS Corel Painter v9.0 Flash MX2004 中文版 Illustrator cs2 中文版
VC++6.0含sp6 中英文版 VB6.0 +sp6 简体中文版 Borland Delphi 7汉化版 MSDN for vb6.0中文版 Visual Studio 2005简体
教程中国下属 文件存储共享专家BIBIDU.COM 提供大型软件,教材,源码,电影,音乐,图书等下载 更多精品请点此进入
  您目前所在位置: 教程中国 >> .NET类 >> ASP.NET >> 使用.NET自带的功能制作简单的注册码 RSS订阅
使用.NET自带的功能制作简单的注册码
教程(视频,书籍)下载:  ASP.NET AutoCAD 数据库 C# ASP java photoshop 网页设计 delphi 3dmax Flash C++ VB 张孝祥 实例   更多请进入BIBIDU搜索
IT搜索引擎   
     加密可以帮助保护数据不被查看和修改,并且可以帮助在本不安全的信道上提供安全的通信方式。例如,可以使用加密算法对数据进行加密,在加密状态下传输数据,然后由预定的接收方对数据进行解密。如果第三方截获了加密的数据,解密数据是很困难的。
  
  为了达到这些目的,您可以使用算法和惯例的组合(称作加密基元)来创建加密方案。包括私钥加密(对称加密)、公钥加密(不对称加密)、加密签名和加密哈希。
  
  我们使用公钥加密(不对称加密)来实现注册码的算法。
  
  公钥加密使用一个必须对未经授权的用户保密的私钥和一个可以对任何人公开的公钥。公钥和私钥都在数学上相关联;用公钥加密的数据只能用私钥解密,而用私钥签名的数据只能用公钥验证。
  
  对于注册码来说,我们使用私钥来对一个字符串(用户名)签名,然后使用公钥对这个签名(注册码)进行验证。由于公钥只能用于验证,所以我们可以放心把公钥分发出去;私钥匙用来进行签名的,所以私钥匙要保存在开发者手中的。这样就达到了注册认证的目的。目前使用“用户名、注册码”模式注册的软件都应该是使用这一技术。
  
  首先我们生成自己要使用的一个公钥和私钥。
  
  Private rsa As New Security.Cryptography.RSACryptoServiceProvider
  
  RSACryptoServiceProvider类提供RSA算法的实现执行不对称加密和解密。通过ToXMLString就可以生成我们需要的公钥和私钥。
  
  rsa.ToXMLString(False)
  
  rsa.ToXMLString(True)
  
  当参数为False的时候,仅生成公钥;True的时候将会把公钥和私钥全部生成。我们一般通过ToXMLString(False)得到一个公钥字符串;通过ToXMLString(True)得到一个私钥字符串(虽然其中含有公钥)。我们可以将这两个密钥保存在本机上面,通过字符串常量定义并使用。也就是说我们的注册信息将使用唯一的公钥和私钥。
  
  
  
  然后我们通过公钥和私钥对指定的字符串进行签名。
  
  rsa.FromXMLString(PRIVATE_KEY)
  
  Dim f As New Security.Cryptography.RSAPKCS1SignatureFormatter(rsa)
  
  f.SetHashAlgorithm("SHA1")
  
  Dim source() As Byte = System.Text.ASCIIEncoding.ASCII.GetBytes(UID)
  
  Dim sha As New Security.Cryptography.SHA1Managed
  
  Dim result() As Byte = sha.ComputeHash(source)
  
  Dim regkey() As Byte = f.CreateSignature(result)
  
  SerialNumber = Convert.ToBase64String(regkey)
  
  通过刚才得到的私钥重新初始化rsa对象,然后通过RSAPKCS1SignatureFormatter类来进行签名。我们将输入的字符串转化成字节数组(我们这里默认用户名只能由ASCII字符组成),通过SHA1哈西算法计算其哈希值。再使用CreateSignature方法将得到的哈西值进行签名。最后我们将得到的字节数组转化成字符串作为注册码。这就是生成注册码的过程。我们可以重复使用这一段程序对不同的用户名进行签名,从而得到与之对应的不同注册码。
  
  
  
  最后我们把刚才得到的用户名和注册码进行验证。
  
  rsa.FromXMLString(PUBLIC_KEY)
  
  Dim f As New Security.Cryptography.RSAPKCS1SignatureDeformatter(rsa)
  
  f.SetHashAlgorithm("SHA1")
  
  Dim key() As Byte = Convert.FromBase64String(SerialNumber)
  
  Dim sha As New Security.Cryptography.SHA1Managed
  
  Dim name() As Byte = sha.ComputeHash(System.Text.ASCIIEncoding.ASCII.GetBytes(UID))
  
  Result = f.VerifySignature(name, key)
  
  这一次我们使用公钥来初始化rsa对象,然后通过RSAPKCS1SignatureDeformatter类来验证签名。我们将得到的注册码反向转化为字节数组;并将用户名进行哈西计算得到哈西值。最后通过VerifySignature进行验证。
  
  
  从上面的程序可以看出,生成注册码需要私钥(私钥内附带公钥信息),而且可以生成任意多的用户名、注册码对。而通过公钥,我们只能进行验证而不能生成。所以公钥可以放心的发放给所有的用户进行验证,而私钥却不能。所以在发行的版本中可以附带公钥和验证算法。因为即便用户得到了公钥和验证算法也无法简单的破解。
  
  现在网络上流行的注册机,很大程度上是破解了软件的私钥,从而达到无限制的生成所需要的注册信息。但是如果用户反编译你的产品,并且修改了中间代码,那么它将会绕过注册的判断逻辑。这就不是这一篇所能解决的问题了。因为即是你使用了Web Service技术进行在线激活或注册,还是可以通过网络侦听来分析服务器的信息,模拟一个假的服务器来进行的。
  http://www.cnblogs.com/farrio/archive/2006/12/01/579296.HTML
  
  
    。



来源:upschool.com.cn
作者:
关键字:使用.NET自带,功能制作简单,注册码
发表日期:2006-12-4

网页显示有限 阅读全文请下载本文完整版WORD文档

上一篇:ASP.NET—From验证:全部代码及讲解   下一篇:ASP.NET中的HTTP模块和处理程序 5


本文的相类似文章
  • 创造属于自己的注册码
  • 使用.NET自带的功能制作简单的注册码
  • 使用.NET自带的类实现DataGrid报表的打印
  • 软件注册码方面的应用和本地化的加密
  • 网友评论 查看本文全部评论
    笔 名: *
    评 论:
    最多500字。当前字数:0
    联系方式:
    验证码:
    在学习中进步 在进步中成长 教程中国相随您的成长之路
    华腾联合科技股份有限公司版权所有
    广告联系:Rosibo@163.com