我现在用vs2003做了一个b/s模式的软件,现在想通过在用户登陆的时候,先检测用户注册表,检测其是否已经注册过,如果没有注册的话,就自动跳到注册页面进行注册,想获取cpu序列号,我看了网上的,都是c/s模式的,那样的话,是获取的客户端的硬件,那样是不行的啊,请问大家,有没有什么好的解决方案啊,只要是有效的,都给分

解决方案 »

  1.   


    设置一个试用期,试用期过后提醒用户!
    不要用C/S的模式来做B/S
      

  2.   

    数据库里放 加密的 注册信息     程序里读取 如果你有完好的WEBSERVIS  那就  远程授权一下也可以
      

  3.   

    我现在是可以获得服务器上的cpu序列号,我如何根据这个序列号生成一个授权码呢,这个里面有个加密与解密的过程,谁可以提供这个加密与解密的方法啊?
      

  4.   

    可用md5或des加密,.net提供了相关的对象.网上搜索一下.很多.
      

  5.   

    MD5的:public static string GetMD5EncryptString(string sInput)
    {
    System.Security.Cryptography.MD5CryptoServiceProvider obj = new System.Security.Cryptography.MD5CryptoServiceProvider();
    byte[] b = System.Text.Encoding.Default.GetBytes(sInput);
    b= obj.ComputeHash(b,0,b.Length);
    string res ="";
    for (int i=0;i<b.Length;i++)
    {
    res += b[i].ToString("X").PadLeft(2,'0');
    }
    obj = null;
    return res;
    }
      

  6.   

    你这种方式肯定不行的,b/s的系统取不到客户的注册表(非windows系统没有注册表)和硬件信息
    就直接用登陆验证就可以了呀
    把用户写在一个用户表中
      

  7.   

    这个我也在考虑~首先都封装成一个DLL,然后使用混淆。这样可以最大程度减少反编译。然后可以判断或者绑定 授权的域名,比如 www.nov30th.com然后跟一些字符串得到
    www.nov30th.com#$@%$#$@123333333 这些当然不能让客户知道的,最后用SHA1或者MD5放入数据库。(域名,加密后的字符串)启动时把域名和加密的对比(即重新加密域名和数据库的对比。这个要同时读取,不要使用WHERE,防止用户用SQL监视,否则不写入APP变量)读到App网站全局变量中。  有访问时判断即可。否则为非授权的使用。这个是我的思路。顺便接分
      

  8.   

    有没有人给出MD5的加密和解密源码,或者Des的也可以,给完立刻揭贴
      

  9.   

    这个是一个类,把它编译成dll,你就可以直接用了,是des
    using System;
    using System.IO; 
    using System.Security.Cryptography;namespace bh
    {
    /// <summary>
    /// Security 的摘要说明。
    /// </summary>
    public class Security
    {
    const string KEY_64 = "xxxxxxxx"; 
    const string IV_64 = "xxxxxxxx"; //注意了,是8个字符,64位 
    public Security()
    {
    //
    // TODO: 在此处添加构造函数逻辑
    //
    }public static string Encode(string data) //加密

    byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64); 
    byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64); DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider(); 
    int i = cryptoProvider.KeySize; 
    MemoryStream ms = new MemoryStream(); 
    CryptoStream cst = new CryptoStream(ms,cryptoProvider.CreateEncryptor(byKey,byIV),CryptoStreamMode.Write); StreamWriter sw = new StreamWriter(cst); 
    sw.Write(data); 
    sw.Flush(); 
    cst.FlushFinalBlock(); 
    sw.Flush(); 
    return Convert.ToBase64String(ms.GetBuffer(),0,(int)ms.Length); } public static string Decode(string data) //解密

    byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64); 
    byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64); byte[] byEnc; 
    try 

    byEnc = Convert.FromBase64String(data); 

    catch 

    return null; 
    } DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider(); 
    MemoryStream ms = new MemoryStream(byEnc); 
    CryptoStream cst = new CryptoStream(ms,cryptoProvider.CreateDecryptor(byKey,byIV),CryptoStreamMode.Read); 
    StreamReader sr = new StreamReader(cst); 
    return sr.ReadToEnd(); 
    }
    }
    }