日期:2014-05-18  浏览次数:20456 次

关于asp。net网站发布给客户 如何通过序列号来授权给客户使用
我们做的b/s结构的系统要销售给不同的客户 如何通过序列号来授权 

以及如何使单个序列号只能够给单用户使用!!!!!!

我自己初步想了些方法 但是希望看看个人大人们怎么做的

help!~!!!!!!!

------解决方案--------------------
简单。

一种是读取服务器特征码給你们算出序列号。

一种你们根据一定算法计算出序列号然后給人家,程序定时访问你们的数据库检查合法性。
------解决方案--------------------
做一个小的C/S程序,用来在客户机器上运行后得到CPU编号,然后让用户把CPU编号发给你后,把CPU编号传给你自己写生成序列号的类
返回序列号给客户,客户填写正确后,在注册表里注册,程序每次运行的时候都去注册表里读一下这个键值...
------解决方案--------------------
C# code

using System;
using System.Collections.Generic;
using System.Text;

using System.Runtime.InteropServices; 
namespace TopWin.Common.EncryptFunction
{
   public class Key
    {
        [DllImport("kernel32.dll")]
        private static extern int GetVolumeInformation
            (
            string lpRootPathName,
            string lpVolumeNameBuffer,
            int nVolumeNameSize,
            ref int lpVolumeSerialNumber,
            int lpMaximumComponentLength,
            int lpFileSystemFlags,
            string lpFileSystemNameBuffer,
            int nFileSystemNameSize
            );

        /// <summary>
        /// C盘序列号 
        /// </summary>
        /// <param name=""></param>
        /// <returns></returns>
        public static string HDVal()
        {
            const int MAX_FILENAME_LEN = 256;
            int retVal = 0;
            int a = 0;
            int b = 0;
            string str1 = null;
            string str2 = null;
            int i = GetVolumeInformation(
                "c:\\",
                str1,
                MAX_FILENAME_LEN,
                ref retVal,
                a,
                b,
                str2,
                MAX_FILENAME_LEN
                );

            return retVal.ToString();
        }
    }
}

------解决方案--------------------
C# code

    public class Hash
    {

        #region 加密
        /// <summary>
        /// MD5加密
        /// </summary>
        /// <param name="InputString">要加密的字串</param>
        /// <returns>密文</returns>
        public static string Md5hash_String(string InputString)
        {
            InputString = Md5hash_String(InputString, "MD5");
            return InputString;
        }
        /// <summary>
        /// SHA1,MD5加密 
        /// </summary>
        /// <param name="s">要加密的字符串</param>
        /// <param name="format">加密格式 MD5 或 SHA1</param>
        /// <returns>返回加密后的字串</returns>        
        public static string Md5hash_String(string InputString, string format)
        {
            if (format == "SHA1")
            {
                InputString = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(InputString, "SHA1");
            }
            else if (format == "MD5")
            {
                InputString = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(InputString, "MD5");
            }

            return InputString;
        }
        #endregion

------解决方案--------------------
学习
------解决方案--------------------
我有个想法 不知道行不行的通 
楼住的意思是想让一个序列号只可以让一个客户来登陆使用 不可能很多人都用这一个号?(理解正确的话)
可以针对序列号建一个表2个字段一个序列号一个是客户登陆IP, 当用户用此序列号登陆时 在对应的序列号中写入IP值
离开时则清空IP ,这样当一个序列号被使用时 其他人在用就判断IP不为空 就禁制登陆 

------解决方案--------------------
winner2050~~~真下本
------解决方案--------------------