读一下网卡和cpu等的序列号,然后自己编个加密算法加密好了

解决方案 »

  1.   

    我觉得可以考虑用WEB服务来做产品的激活和注册!
      

  2.   

    To ekin(风语者) :
    原理基本明白,只不过希望有一个现成的东西参考一下,自己从头写难免会有疏漏。To eheartcool(ced) :
    有现成的产品或者在线服务实现这样的功能,不过比较贵。
    我想第一步也没有必要做到这一点,也没有这个条件提供类似Online的服务。只要能够通过机器标识与软件的序列号计算生成标识码,可以通过Desktop Phone或者Online Email的方式将验证码发还给用户就可以了。谢谢大家关注,期待更多信息。
      

  3.   

    using System;namespace Home.Cscer.Text
    {
    /// <summary>
    /// clsJEncode 的摘要说明。
    /// </summary>
    public class clsJEncode
    {
    public clsJEncode()
    {
    //
    // TODO: 在此处添加构造函数逻辑
    //
    } public static String RSAEncode(String sInfo)
    {
    String sReturn = String.Empty; if(sInfo.Trim().Length <= 0)
    {
    return sReturn;
    } //以下参数由RSA加密算法得来
    int iEEE = 79;
    // int iDDD = 1019;
    int iNNN = 3337; String sTempInfo = sInfo.Trim();
    long lTemp = 0; while(sTempInfo.Length > 0)
    {
    if(sTempInfo.Length >= 4)
    {
    lTemp = long.Parse(sTempInfo.Substring(0, 4)); if(lTemp >= iNNN)
    {
    lTemp = long.Parse(sTempInfo.Substring(0, 3));
    sTempInfo = sTempInfo.Substring(3);
    }
    else
    {
    sTempInfo = sTempInfo.Substring(4);
    }
    }
    else
    {
    lTemp = long.Parse(sTempInfo.Substring(0, sTempInfo.Length));
    sTempInfo = String.Empty;
    } int iTemp = iEEE; bool bFlag = true; long lReturn = 1; while(bFlag)
    {
    if(iTemp <= 3)
    {
    bFlag = false;
    } for(int i=0; i<((iTemp > 3)? 3 : iTemp); ++i)
    {
    lReturn *= lTemp;
    } lReturn = lReturn % iNNN; iTemp = ((iTemp > 3)? (iTemp - 3) : iTemp);
    } sReturn += lReturn.ToString().PadLeft(4, '0');
    } return sReturn;
    } public static String RSADecode(String sInfo)
    {
    String sReturn = String.Empty; if(sInfo.Trim().Length <= 0)
    {
    return sReturn;
    } //以下参数由RSA加密算法得来
    // int iEEE = 79;
    int iDDD = 1019;
    int iNNN = 3337; String sTempInfo = sInfo.Trim();
    long lTemp = 0; while(sTempInfo.Length > 0)
    {
    if(sTempInfo.Length >= 4)
    {
    lTemp = long.Parse(sTempInfo.Substring(0, 4)); if(lTemp >= iNNN)
    {
    lTemp = long.Parse(sTempInfo.Substring(0, 3));
    sTempInfo = sTempInfo.Substring(3);
    }
    else
    {
    sTempInfo = sTempInfo.Substring(4);
    }
    }
    else
    {
    lTemp = long.Parse(sTempInfo.Substring(0, sTempInfo.Length));
    sTempInfo = String.Empty;
    } int iTemp = iDDD; bool bFlag = true; long lReturn = 1; while(bFlag)
    {
    if(iTemp <= 3)
    {
    bFlag = false;
    } for(int i=0; i<((iTemp > 3)? 3 : iTemp); ++i)
    {
    lReturn *= lTemp;
    } lReturn = lReturn % iNNN; iTemp = ((iTemp > 3)? (iTemp - 3) : iTemp);
    } sReturn += lReturn.ToString();
    } return sReturn;
    }
    }
    }
      

  4.   

    取得服务器的固定信息,例如硬盘物理序列号,CPU序列号等,再把得到的序列号加个密匙,再用
    MD5加密后,得出的字符码不就得了
      

  5.   

    cscer(石头)兄提供的东西有价值,但是仅仅是一种编码方式。
    我发这个帖子的目的是和大家讨论一下这个问题的整体解决思路,以及每一步的细节,我想应该有很多人都对此感兴趣。