一套带混淆的本地验证算法
# 一套带混淆的本地验证算法
## 算法依据当前系统时间的月和日来校验,只不过带了很多垃圾字符混淆,详细逻辑看代码逻辑与注释
```cpp
#define_CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <windows.h>
#include <random>
#include <chrono>
#include <ctime>
#include <string>
#include <fstream>
using namespacestd;
//约定源验证位置
#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 = { 0 };
int j = 0;
for (int i = 48 ;i<128; i++) {
passtable = i;
j++;
}
//生产PWD_LENTH位随机密码字符
unsigned char password = { 0 };
for (int i = 1; i < PWD_LENTH; i++) {
password = passtable;
}
//约定第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();
char day_digit = to_string(day).c_str();
int month_loc = password;
password = month_digit;
int day_loc = password;
password = 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);
}
pwdtxt.close();
}
```
## 生成密文:
##
## 可以根据上述的代码写出应用端的校验,也可以根据自己的需求改。
感谢朋友分享,学习了。 感谢楼主分享 这个还行,感谢分享 感谢分享,也要考虑人性化 谢谢分享。。。楼主厉害。。。 感谢分享,很有用 可以还原的吗,有没有还原的脚本 XZ1314XZ 发表于 2023-5-11 01:38
可以还原的吗,有没有还原的脚本
解密就是按照这个规则解就行了 真是看到加密后的结果都望而却步,多谢楼主分享啊
页:
[1]
2