广安门内网站建设,企业为什么需要会计,哪个网站可以做奖状,天津微网站为保护自己辛苦写出的程序#xff0c;规避白嫖。通常需要对可执行程序进行加密授权。网上主流的方法是给主程序套壳#xff0c;但是破解软件网站都快要翻烂了#xff0c;还是没有找到满足自己需求的套壳软件。索性还是自己写这个加密授权软件。 0、中心思想 让软件获取此电脑… 为保护自己辛苦写出的程序规避白嫖。通常需要对可执行程序进行加密授权。网上主流的方法是给主程序套壳但是破解软件网站都快要翻烂了还是没有找到满足自己需求的套壳软件。索性还是自己写这个加密授权软件。 0、中心思想 让软件获取此电脑的CPU和MAC地址等信息然后组合成机器码每个机器都是独一无二的添加只有自己才知道的公钥到机器码与之组合成密码明文将密码明文用md5或者其他方式加密得到每个机器独一无二的密码读取注册表中代表本软件密码的参数如果不匹配则进入授权界面授权成功后将密码写入注册表下一次使用将不再受到约束根据基于机器码的加密过程添加只有自己知道的公钥单独写一个机器码→授权码的授权软件。
1、项目文件和头文件
.pro .h
// .pro
QT network// .h
#include QtNetwork
#include QSettings
2、生成机器码
// 获取CPU信息
QString mainwindow::get_cpu_id()
{QString strCpuId ;unsigned int dwBuf[4] { 0 };unsigned long long ret 0;__cpuid((int*)(void*)dwBuf, 1);ret dwBuf[3];ret ret 32;QString str0 QString::number(dwBuf[3], 16).toUpper();QString str0_1 str0.rightJustified(8, 0);QString str1 QString::number(dwBuf[0], 16).toUpper();QString str1_1 str1.rightJustified(8, 0);strCpuId str0_1 str1_1;return strCpuId;
}// 获得独一无二的机器码
QString mainwindow::get_machine_code()
{QString cpuid get_cpu_id();QString macid get_mac_id();QString UniqueCode cpuid macid;QString MachineCode ;for(int i 0; i UniqueCode.size(); i){MachineCode MachineCode UniqueCode[i];if((i1)%40 i1!UniqueCode.size()){MachineCode MachineCode -;}}return MachineCode;}3、加入公钥
// 加入公钥
QString mainwindow::get_visible_key(){QString machinecode get_machine_code();m_str_machine_code machinecode;QString Authorkey1 公钥1-自定义;QString Authorkey2 公钥2-自定义;QString ciphertext Authorkey1 - machinecode - Authorkey2;return ciphertext;
}
4、用md5加密添加了公钥的组合明文
// 获得加密后的密码
QString mainwindow::get_md5_key(){QString ciphertext get_visible_key();QString md5Str QCryptographicHash::hash(ciphertext.toLatin1(),QCryptographicHash::Md5).toHex();return md5Str;
}
5、判断是否授权 // 初始化判断是否已授权只调用一次
bool mainwindow::is_authorized(){QString md5pwd get_md5_key();m_str_md5_key md5pwd;qDebug() m_str_md5_key;QSettings setting(HKEY_CURRENT_USER\\Software\\自定义注册表的名字, QSettings::NativeFormat);QString mypwd setting.value(自定义参数的名字, ).toString();if(mypwd md5pwd){return true;}else{return false;}
}
6、授权成功写入注册表
// 授权成功将信息保存进入注册表
void authorize::save_authorization_info(QString md5_key)
{QSettings setting(HKEY_CURRENT_USER\\Software\\自定义注册表的名字, QSettings::NativeFormat);setting.setValue(自定义参数的名字, md5_key);
} 软件的授权界面、按钮操作、弹出授权界面和关闭授权界面的逻辑等内容这些我就不分享了上面已经提供了最核心的思想和最核心的功能拿着这些东西就能够实现一机一码加密功能了。 授权软件要单独写一个可以说是非常简单就不赘述了。
最后愿我们共同进步 感谢您的阅读欢迎留言讨论、收藏、点赞、分享。