qt实现了一个给自己软件加密的功能。
原理是:
需要被注册的软件第一次运行的时候,在系统的注册表里面注册一个键值,如下:
这个值作为生成密钥的用户识别号,然后生成密钥文件key.db,把这个key.db文件放到软件执行目录下,即可完成软件的注册并正常使用软件。
注:将cpu,网卡,硬盘信息读取出来,将它们作为用户识别号,这样更方便?
软件第一次打开的界面及密钥生成工具软件界面如下:
将密钥生成工具软件生成的key.db放到软件执行目录下之后,软件即可正常使用,如下图:
代码使用了MD5加密 外加 AES加密,
解密和加密的核心代码如下:
QString frmMain::getEncrypt(const QString &data, QString key)//data是需要被加密的原始数据,我这里放的是时间信息,key是注册表中的值
{
QAESEncryption encryption(QAESEncryption::AES_128, QAESEncryption::ECB, QAESEncryption::ZERO);
QByteArray hashKey = QCryptographicHash::hash(key.toUtf8(), QCryptographicHash::Md5);
QByteArray encodedText = encryption.encode(data.toUtf8(), hashKey);
QString str_encode_text=QString::fromLatin1(encodedText.toBase64());
qDebug()<<"str_encode_text.size():"<<str_encode_text.size();
return str_encode_text;
}
QString frmMain::getDecrypt(const QString &data, QString key)//data是需要被加密的原始数据,我这里放的是时间信息,key是注册表中的值
{
QAESEncryption encryption(QAESEncryption::AES_128, QAESEncryption::ECB, QAESEncryption::ZERO);
QByteArray hashKey2 = QCryptographicHash::hash(key.toUtf8(), QCryptographicHash::Md5);
QByteArray decodedText = encryption.decode(QByteArray::fromBase64(data.toLatin1()), hashKey2);
return decodedText;
}
源码链接:
https://download.csdn.net/download/weixin_43935474/85311488
————————————————
版权声明:本文为CSDN博主「GreenHandBruce」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43935474/article/details/124623987