当前位置:  编程技术>.net/c#/asp.net

Asp.net程序注册的完整实现代码

    来源: 互联网  发布时间:2014-08-30

    本文导语:  本代码的实现思路: 根据服务器端的某些机器码,经过处理后得到ID号。ID号经过加密算法加密后,形成序列号。注册时,用户将ID号告知软件权益所有者,软件权益所有者将序列号告知用户。用户根据此序列号注册时,序列号...

本代码的实现思路:
根据服务器端的某些机器码,经过处理后得到ID号。ID号经过加密算法加密后,形成序列号。注册时,用户将ID号告知软件权益所有者,软件权益所有者将序列号告知用户。用户根据此序列号注册时,序列号被保存在数据库中。在asp.net程序中进行注册检查,根据探测服务器端机器码生成的序列号与数据库中的序列号进行比较,如二者一致则为注册程序,反之则为非注册程序。

本代码主要由以下文件组成。
1、reg_forcool.cs,包含了实现注册功能的各种函数,作为封装引用,保存在BIN文件夹下面。
2、Reg.aspx和Reg.aspx.cs,注册程序,用户根据程序提供的ID号向软件权益所有者索取序列号进行注册。
3、GetSN.aspx和GetSN.aspx.cs,生成序列号程序,根据用户的ID号生成序列号。此程序不提供给用户,由软件权益所有者保存。
4、check_reg.aspx和check_reg.aspx.cs,检查是否注册程序,此程序可移植到其它用户必用的重要页面中。

1、reg_forcool.cs  实现注册功能的各种函数
 

代码示例:

//作为封装引用,保存在BIN文件夹下面
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Collections.Generic;
using System.Text;
using System.Management;//您需要在解决方案资源管理器中添加引用System.Management
using System.Security;//您需要在解决方案资源管理器中添加引用System.Security
using System.Security.Cryptography;
using System.IO;

namespace Reg_forcool_NameSpace

    public class Reg_forcool_Class
    {      
        ///
        /// 取得网卡mac地址
        ///
        ///
        public string GetNetCardMacAddress()
        {
            ManagementClass mc;
            ManagementObjectCollection moc;
            mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
            moc = mc.GetInstances();
            string str = "";
            foreach (ManagementObject mo in moc)
            {
                if ((bool)mo["IPEnabled"] == true)
                    str = mo["MacAddress"].ToString();

            }
            str = str.Replace(":", "");
            return str;
        }      
        ///
        /// C盘序列号
        ///
        ///
        public string GetDiskVolumeSerialNumber()
        {
            ManagementObject disk;
            disk = new ManagementObject("win32_logicaldisk.deviceid="c:"");
            disk.Get();
            return disk.GetPropertyValue("VolumeSerialNumber").ToString();
        }      
        ///
        /// 取得id号,如果有网卡mac地址则返回c盘序列号,没有则返回c盘序列号
        ///此处没有采用cpu序列号是因为涉及到多核cpu会导致序列号的不唯一性。
        ///
        ///
        public string GetId()
        {
            string str = GetNetCardMacAddress();
            if (str == "")
            {
                str = GetDiskVolumeSerialNumber();
            }
            if (str == "")
            {
                str = "cccccccc";
            }
            return str;
        }      
        ///
        /// (可逆加密)
        ///
        ///
        ///注意第二个参数必须为8个或以上的字符,您可以通过修改第二个参数得到不同的序列号
        public string DesEncrypt(string strText, string strEncrKey)
        {
            byte[] byKey = null;
            byte[] IV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
            try
            {
                byKey = System.Text.Encoding.UTF8.GetBytes(strEncrKey.Substring(0, strEncrKey.Length));
                DESCryptoServiceProvider des = new DESCryptoServiceProvider();
                byte[] inputByteArray = Encoding.UTF8.GetBytes(strText);
                MemoryStream ms = new MemoryStream();
                CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(byKey, IV), CryptoStreamMode.Write);
                cs.Write(inputByteArray, 0, inputByteArray.Length);
                cs.FlushFinalBlock();
                return Convert.ToBase64String(ms.ToArray());
            }
            catch (System.Exception error)
            {
                return "error:" + error.Message + "r";
            }
        }     
        ///
        /// 根据c盘或网卡mac地址用加密方法生成序列号
        ///
        ///
        public string GetSN_Exterior()
        {
            string id = GetId(); //取得服务器端ID号
            string str = DesEncrypt(id, "forcools");//注意第二个参数必须为8个或以上的字符         
            if (str.Length > 20)
            {
                str = str.Substring(0, 20);
            }
            str = str.Substring(0, 4) + "-" + str.Substring(4, 6) + "-" + str.Substring(10, 6) + "-" + str.Substring(16, 4);
            return str;
         
        }
        ///
        /// 根据c盘或网卡mac地址用加密方法生成序列号
        ///
        ///
        public string GetSN_Exterior(string id)
        {          
            string str = DesEncrypt(id, "forcools");//注意第二个参数必须为8个或以上的字符         
            if (str.Length > 20)
            {
                str = str.Substring(0, 20);
            }
            str = str.Substring(0, 4) + "-" + str.Substring(4, 6) + "-" + str.Substring(10, 6) + "-" + str.Substring(16, 4);
            return str;
         
        }   
      
        ///
        /// //检查是否注册
        ///
        /// 注册返回true,未注册返回false
        public bool CheckReg(string SN)
        {
            string RightSN = GetSN_Exterior();
            bool rst = false;
            if (SN == RightSN)
            {
                rst = true;
            }
            return rst;
        }
    }
}

2、Reg.aspx,注册程序,用户根据程序提供的ID号向软件权益所有者索取序列号进行注册
 

代码示例:




    程序注册_www.


   
   

        ID: 

        序列号:
         

       

       

   

3、Reg.aspx.cs文件
 

代码示例:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Reg_forcool_NameSpace;

public partial class forcool_Reg : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Reg_forcool_Class r_forcool_class = new Reg_forcool_Class();
        TextBox1.Text = r_forcool_class.GetId();
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        string SN = TextBox2.Text;
        //如果序列号不为空
        if (SN != "")
        {
            Reg_forcool_Class r_forcool_class = new Reg_forcool_Class();
            string Right_SN = r_forcool_class.GetSN_Exterior();
            //如果注册成功
            if (SN == Right_SN)
            {              
                /////////////////////////
                //在这里将序列号写进数据库,您需要自行添加代码实现此功能
                ////////////////////////
                Label1.Text = "注册成功!";
            }
            //如果注册失败
            else
            {
                Label1.Text = "注册失败!序列号不正确。";
            }
        }
        //如果序列号为空
        else
        {
            Label1.Text = "序列号不能为空";
        }
    }
}
 

 1 2 下一页 尾页

    
 
 

您可能感兴趣的文章:

  • c#/ASP.NET操作cookie(读写)代码示例
  • ??谁能把ASP代码改为JSP的
  • asp.net文字水印功能简单代码
  • asp连接sql server 2005的代码
  • asp.net读取本地与全局资料文件的代码
  • asp.net 获取目录中图片的代码
  • asp.net正则表达式提取中文的代码示例
  • 如何在ASP的frame框架中屏蔽右键,以防止查看页面的源代码?
  • asp 正则 过滤重复字符串的代码
  • asp正则过滤重复字符串的代码
  • asp去掉html,保留img br p div的正则实现代码
  • asp.net使用mshtml处理html的代码
  • asp.net 判断当前日期是该年中第几周的代码
  • asp.net中利用正则表达式判断一个字符串是否为数字的代码
  • asp.net弹出消息框、确认框的代码汇总
  • asp.net 获取ashx中数据的代码
  • asp.net防止页面刷新重复提交的代码
  • asp.net读取txt文件内容的代码
  • asp.net文件分块下载的实现代码
  • asp.net 正则表达式匹配图片路径的实现代码
  • [asp]中的正则表达式运用代码
  • 在ASP中可以轻易实现,不知道在JSP中能否实现?
  • Linux平台下哪种方法实现ASP好?
  • 求解!Java如何能在多个applet之间实现类似asp的session类!
  • 调试jsp的时如何实现像asp中的response.end的效果
  • 怎么用能让asp实现统计在线人数的功能。在线等待!!!帮忙送分!
  • 在jsp 中如何实现像asp 中的页面弹出式的菜单
  • asp.net 参数不同共用一个页面的实现方法
  • Asp.net防止重复提交的实现方法
  • 用linux做服务器运行ASP.net网站,请问具体怎样实现??
  • ASP.NET MVC3 实现全站重定向的简单方法
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 新人提问:asp+access的程序在linux下怎么改?
  • 新手散分问题:如何在ASP做的网页上嵌入JAVA程序?
  • asp.net应用程序的生命周期和iis应用程序池
  • 我是编写ASP程序的,现在想学JAVA程序,请介绍几本入门书!提者有分!
  • 请问一下怎么在redhat9中使用asp程序
  • 请问在JSP中如何中断程序的执行,类似asp的response.end
  • asp程序使用的access在Linux下如何使用!
  • freeBSD的系统中可以使用ASP程序吗?
  • 运行asp.net程序 报错:磁盘空间不足
  • 发布程序时出现“类型ASP.global_asax同时存在于...”错误的解决办法
  • 关于resin和iis整合后,在使用asp程序时提示500内部服务器错误
  • 我现在编的asp.net程序能不能不做大的修改跑在linux上?
  • 如何将下面的jsp程序用asp写?
  • 请问能不能把asp.net程序部署在linux服务器上????? 谢谢!!!
  • 我们网站的服务器从windows2000迁往linux,ASP程序继续使用,可是我连LINUX的皮毛都不了解,大家告诉我LINUX下怎么建网站??
  • ASP.NET 程序中删除文件夹导致session失效问题的解决办法分享
  • 初学jsp的asp程序员的十个疑问(我会继续补分)
  • asp.net使用ODP即oracle连接方式的的防注入登录验证程序
  • asp.net 由于无法创建应用程序域,因此未能执行请求错误的解决方法
  • Asp.Net、asp实现的搜索引擎网址收录检查程序
  • ASP.NET之 Ajax相关知识介绍及组件图
  • 我想了解一些关于Java怎样与Asp或Asp.net结合方面在未来发展方向的问题?
  • asp.net UrlEncode对应asp urlencode的处理方法
  • asp.net实例 定义和使用asp:AccessDataSource
  • win2008 r2 服务器环境配置(FTP/ASP/ASP.Net/PHP)
  • asp与asp.net的session共享
  • 如何在unix下发布asp?
  • 怎么让Apache支持Asp?
  • ASP和ASP.Net共享Session解决办法
  • 通过socket和asp打交道
  • 犹豫中……,到底是选择ASP,还是JSP?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3