QQ登录

只需要一步,快速开始

APP扫码登录

只需要一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

查看: 752|回复: 0

[C/C++/Qt] 带混淆的本地验证算法

[复制链接]

等级头衔

积分成就    金币 : 2851
   泡泡 : 1516
   精华 : 6
   在线时间 : 1305 小时
   最后登录 : 2024-12-7

丰功伟绩

优秀达人突出贡献荣誉管理论坛元老活跃会员

联系方式
发表于 2023-5-7 08:47:48 | 显示全部楼层 |阅读模式
算法依据当前系统时间的月和日来校验,只不过带了很多垃圾字符混淆,详细逻辑看代码逻辑与注释。
. X3 ]1 p  Q0 _" N2 e
#define  _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <windows.h>
#include <random>
#include <chrono>
#include <ctime>
#include <string>
#include <fstream>
using namespace  std;
//约定源验证位置
#define CHECK_FLAG 325
//密文生成长度
#define PWD_LENTH 1000

int main()
{
    //生成随机数种子
    random_device rd;  // 用于获取随机种子
    mt19937 gen(rd()); // 使用Mersenne Twister 19937算法作为随机数生成器
    uniform_int_distribution<int> dis(0, 78); // 定义一个产生0到99之间均匀分布的整数的随机数分布器
    //生成密码表
    unsigned char passtable[80] = { 0 };
    int j = 0;
    for (int i = 48 ;i<128; i++) {
        passtable[j] = i;
        j++;
    }
    //生产PWD_LENTH位随机密码字符
    unsigned char password[PWD_LENTH] = { 0 };
    for (int i = 1; i < PWD_LENTH; i++) {
        password[i] = passtable[dis(gen)];
    }
    //约定第CHECK_FLAG=325位为起源验证字节
    //获取当前系统时间的月的第一位,号的第一位分别转为字符作为核心验证字节
    //325位的ascll码存了月的第一位存在位置,月所在位置的下一位又存了号的第一位所存在的位置
    chrono::system_clock::time_point now = chrono::system_clock::now();
    time_t time = chrono::system_clock::to_time_t(now);
    tm local_time = *localtime(&time);
    int month = local_time.tm_mon + 1;  // 获取当前月份,并加1(因为tm_mon的取值范围是0-11)
    int day = local_time.tm_mday;
    char month_digit = to_string(month).c_str()[0];
    char day_digit = to_string(day).c_str()[0];
    int month_loc = password[CHECK_FLAG];
    password[month_loc] = month_digit;
    int day_loc = password[month_loc + 1];
    password[day_loc] = day_digit;
    //将密文写出为password.txt
    fstream pwdtxt;
    pwdtxt.open("password.txt", ios::binary |ios::out);
    for (int i = 0; i< PWD_LENTH; i++) {  // 循环写入字符
        pwdtxt.put(password[i]);
    }
    pwdtxt.close();
}
生成密文:
  p/ }2 A2 f9 \+ `3 M0 ^ 1.jpg
3 E1 r/ x& Z% |& i( _& N% M) I 2.jpg
/ U( M' s7 b0 ?可以根据上述的代码写出应用端的校验,也可以根据自己的需求改。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|paopaomj.COM ( 渝ICP备18007172号|渝公网安备50010502503914号 )

GMT+8, 2024-12-7 04:22

Powered by paopaomj X3.5 © 2016-2025 sitemap

快速回复 返回顶部 返回列表