简单注册算法

得到机器码:

CString Mycode[16]={"ah","tm","ib","nw","rt","vx","zc","ls","pn","xq","fc","zk","eq","wm","np","qw"};                   

    CString stred = '0';
    int num1;
    stred = GetCUPNum()+GetDISKNum()+GetMACaddress();//获取CPU 硬盘 mac地址
    stred.MakeLower();//转换小写字母
    int lenleng = strlen(stred);

    for(int i = 0;i<lenleng ;i++)
    {

        char p = stred.GetAt(i);//返回当前数组下标对应的数组元素

        if(p >= 'a' && p <= 'f')
        {

            num1 = p - 'a'+ 10; 
        }
        else
        {

            num1 = p - '0';

        }

        CString tmp = Mycode[num1]; //获得对应秘钥组合 
        RegCode += tmp;
    }
    RegCode.MakeUpper();//转换大写

得到注册码

//传入机器码 转换成注册码
CString CCreateRegDlg::GetRegPasswd( CString &DirName )
{
    cml.WriteLog(LEVEL_WARN, "%s %u  --注册机序列号-:---%s", __FILE__, __LINE__, DirName);
    long Num1,Num2,Num3; 
    char sn[16]={0}; 
    CString p; 
    int i,len; 
    Num1=Num2=Num3=0; 
    len=int(strlen(DirName)); 
    if(len!=0) 
    { 
        for( i=1;i<=len;i++) 
        { 
            //第一步算法 
            Num1=(long(Num1+(int(DirName[i-1])*i*i)*(i*sqrt((float)DirName[i-1])+1)))%100000; 
            //第二步算法 
            Num2=(Num2*i+(long(pow((float)DirName[i-1],2)*i)))%100000; 
            //第三步算法 
            Num3=(Num2+(long)sqrt((float)Num1))%100000; 
        } 
        //把三个算法结果分别生成5个字符,共有15for(i=0;i<5;i++) 
            sn[i]=(int)(Num1+31+i*i*i)%128; 
        for(i=5;i<10;i++) 
            sn[i]=(int)(Num2+31+i*i*i)%128; 
        for(i=10;i<15;i++) 
            sn[i]=(int)(Num3+31+i*i*i)%128; 
        sn[15]=0; 
        //以下循环把所有生成的字符转换为0---9,A---Z,a----z 
        for(i=0;i<15;i++) 
        { 
            while((sn[i]<'0' || sn[i]>'9') && (sn[i]<'A' || sn[i]>'Z') &&(sn[i]<'a' || sn[i]>'z') ) 
            { 
                sn[i]=(sn[i]+31+7*i)%128; 
            } 
        } 
        //赋值给一个CSTRING变量,用做函数返回值 
        p.Format("%s",sn); 
    } 
    return p; 
}
#常量
#define C1 52845
#define C2 22719
CString CmfcDlg::Encrypt(CString S, WORD Key)//加密
{
    CString Result, str;
    int i, j;

    Result = S; // 初始化结果字符串
    for (i = 0; i<S.GetLength(); i++) // 依次对字符串中各字符进行操作
    {
        Result.SetAt(i, S.GetAt(i) ^ (Key >> 8)); // 将密钥移位后与字符异或
        Key = ((BYTE)Result.GetAt(i) + Key)*C1 + C2; // 产生下一个密钥
    }
    S = Result; // 保存结果
    Result.Empty(); // 清除结果
    for (i = 0; i<S.GetLength(); i++) // 对加密结果进行转换
    {
        j = (BYTE)S.GetAt(i); // 提取字符
                              // 将字符转换为两个字母保存
        str = "12"; // 设置str长度为2
        str.SetAt(0, 65 + j / 26);//这里将65改大点的数例如256,密文就会变乱码,效果更好,相应的,解密处要改为相同的数
        str.SetAt(1, 65 + j % 26);
        Result += str;
    }
    return Result;
}
CString CmfcDlg::Decrypt(CString S, WORD Key)//解密
{
    CString Result, str;
    int i, j;

    Result.Empty(); // 清除结果
    for (i = 0; i < S.GetLength() / 2; i++) // 将字符串两个字母一组进行处理
    {
        j = (((BYTE)S.GetAt(2 * i) - 65) * 26);//相应的,解密处要改为相同的数

        j += (BYTE)S.GetAt(2 * i + 1) - 65;
        str = "1"; // 设置str长度为1
        str.SetAt(0, j);
        Result += str; // 追加字符,还原字符串
    }
    S = Result; // 保存中间结果
    for (i = 0; i<S.GetLength(); i++) // 依次对字符串中各字符进行操作
    {
        Result.SetAt(i, (BYTE)S.GetAt(i) ^ (Key >> 8)); // 将密钥移位后与字符异或
        Key = ((BYTE)S.GetAt(i) + Key)*C1 + C2; // 产生下一个密钥
    }
    return Result;
}

用法
CString text=_T("192.168.18.14");//需要加密的字符串
WORD key=1314;//key
CString jiami=Encrypt(text,key);//加密
AfxMessageBox(_T("密文:")+jiami);
CString jiemi=Decrypt(jiami,key);//解密
AfxMessageBox(_T("原文:")+jiemi);

试用天数,大神这句话说得好:

照样获取系统时间,第一次记录为空,进行时间加密,保存,第二次运行,时间要大于第一次,记录下时间,第三次运行时间要大于第二次时间,记录下时间。。。。。写判断,获取记录的最后时间与当前时间比较,在这次比较之前,先与第一次时间做比较是否够30天。他修改系统时间也不能开启啊。没网就没网,记得。第一次运行,让他对准一下时间。

我是第一次注册后写文件记录当前注册时间,然后在初始化中 把这个时间读出来 然后在比较 这样不管用户怎么修改时间都是要设置成当前时间,不然程序就使用不了…当到期了 程序也运行不了

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
密码:看注释 解压密码146359085 《excel服务器2017程序v3.9》使用说明: 1、本程序支持《excel服务器2017、excel服务器2016、excel服务器2015、excel服务器2013、excel服务器2010》等最新版本版本,不支持excel服务器2019。 2、MSSQL请不要使用空密码,否则注册程序可能失效。 2、本程序没有注册的话,为试用版,用户数最大为10用户,注册后没有限制。 3、安装和装卸本程序时请先停止excel服务器2017的服务。 4、使用本程序时请先删除本软件以前的旧版本补丁。 5、如果下载完整版的升级程序升级,前请先装卸本软件,更新升级后再使用用本软件安装解密。 6、本程序正式版分为标准版及加强版两个版本,标准版只能在你注册的电脑上生效,加强版可以通过下面的操作为其他的excel服务器授权。 7、本程序及其相关内容信息只作为学习、测试使用,严禁用于其它用途!!!、 由于使用本程序而产生的任何后果,请您自已负责!  当您使用了本程序及其相关内容信息后,都将视为接受本警告并自愿承担所有责任!!! 3.9更新说明: 1、修改软件的解密方法,避免后期官方对本软件的检测。 2、修复已知BUG。 3、修复硬件码会变动失效的Bug。 4、新增加对聚表2.6.7的支持。 3.8更新说明: 1、支持《excel服务器2017》。 其他说明: 《excel服务器2016注册程序v3.9加强版》可以用下面步骤为其他服务器授权: 1、在其他安装excel服务器的电脑上运行本软件及安装,并记下硬件码; 2、到安装有正式注册版的那台电脑上运行本软件,把步骤1得到的硬件码填入软件界面上的硬件码位置,设置好选项,然后安装; 3、安装后,打开勤哲安装目录,在目录下找到ESWint12.ini这个文件,把他复制出来。 4、回到步骤1的那台电脑上,把ESWint12.ini覆盖到勤哲的安装目录下,停止excel服务器的服务并从新启动,如果以上步骤没有错误,那这时这台电脑上的excel服务器就是正式注册了。 5、注册时两台电脑要安装同一版本的excel服务器。 《聚表企业版2.6.7》的使用方法: 1、找作者开通聚表权限。 2、在《nxcells服务器配置》复制出机器码,把机器码填入本软件《硬件码》中,版本选择《聚表企业版2.6.7》按安装即可生成授权。 3、把server.nks复制到聚表企业版2.6.7的server目录下,从新启动服务即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值