找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 323|回复: 14

数据库密码tea加密源码,给需要做一键端的人做自定义密码

[复制链接]

1314

主题

9916

回帖

3万

积分

管理员

积分
35153
发表于 2025-2-4 13:46:08 | 显示全部楼层 |阅读模式
rt
回复

使用道具 举报

1314

主题

9916

回帖

3万

积分

管理员

积分
35153
 楼主| 发表于 2025-2-4 13:46:29 | 显示全部楼层
#include <string.h>
#include <stdio.h>
char *key = "troqkddmtroqkcdm";
char *postfix = "e8b10c1f8bc3595be8b10c1f8bc3595b";
class Encrypt
{
public:
void getKeyPre(char sixkey[9],char *ret)
{
ret[0] = 0;
char res1[80];
encrypt(sixkey, res1);
strcat(ret, res1);
strcat(ret, postfix);
}
private:
long long bytes_to_long(char *t)
{
unsigned char *r = (unsigned char *)t;
long long a = (0xFFFFFFFF & (unsigned int)r[0]) << 24;
long long b = (0xFFFFFFFF & (unsigned int)r[1]) << 16;
long long c = (0xFFFFFFFF & (unsigned int)r[2]) << 8;
long long d = r[3];
return a + b + c + d;
}
void long_to_bytes(long long v, char *ret)
{
int a = (int)((0xFF000000 & v) >> 24);
int b = (int)((0xFF0000 & v) >> 16);
int c = (int)((0xFF00 & v) >> 8);
int d = (int)(0xFF & v);
sprintf(ret, "%02x%02x%02x%02x", a, b, c, d);
}
long long unpack(char* tmp,int start,int len)
{
unsigned char *arr = (unsigned char *)(tmp + start);
long long d = arr[0];
long long c = arr[1];
long long b = arr[2];
long long a = arr[3];
a = a << 24;
b = b << 16;
c = c << 8;
return a + b + c + d;
}
void encrypt(char v[9], char*ret)
{
long long v0 = bytes_to_long(v);
long long v1 = bytes_to_long(v + 4);
long long sum = 0;
for (int i = 0; i < 32; ++i)
{
long long tv1 = toUInt32(toUInt32(v1 << 4)) ^ toUInt32((v1 >> 5 & 0x07FFFFFF));
long long tv2 = unpack(key, ((int)sum & 3) * 4, 4);
v0 = toUInt32(v0 + (toUInt32(tv1 + v1) ^ toUInt32(tv2 + sum)));
sum = toUInt32(sum + 0x9E3779B9);
tv1 = toUInt32(toUInt32(toUInt32(v0 << 4)) ^ toUInt32((v0 >> 5 & 0x07FFFFFF)));
tv2 = unpack(key, ((int)toUInt32((int)sum >> 11) & 3) * 4, 4);
v1 = toUInt32(v1 + (toUInt32(tv1 + v0) ^ toUInt32(tv2 + sum)));
}
long_to_bytes(v0, ret);
long_to_bytes(v1, ret + 8);
}
long long toUInt32(long long v)
{
return v & 0xFFFFFFFF;
}
};
void getKey(char sixkey[9],char *ret)
{
Encrypt enc;
enc.getKeyPre(sixkey, ret);
}
int main(){
char password = "uu5!^%jg";
char res[100];
getKey(password,res);
printf("%s",res);
return 0;
}
回复

使用道具 举报

1314

主题

9916

回帖

3万

积分

管理员

积分
35153
 楼主| 发表于 2025-2-4 13:47:13 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

1314

主题

9916

回帖

3万

积分

管理员

积分
35153
 楼主| 发表于 2025-2-4 13:48:02 | 显示全部楼层
测试用例:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

776

主题

7469

回帖

2万

积分

登峰造极

积分
25481
发表于 2025-2-4 13:48:44 | 显示全部楼层

看不懂果然顶了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

1476

主题

1万

回帖

3万

积分

登峰造极

积分
39123
发表于 2025-2-4 13:49:26 | 显示全部楼层
牛皮
回复

使用道具 举报

1476

主题

1万

回帖

3万

积分

登峰造极

积分
39123
发表于 2025-2-4 13:49:48 | 显示全部楼层
感谢分享

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

1476

主题

1万

回帖

3万

积分

登峰造极

积分
39123
发表于 2025-2-4 13:50:00 | 显示全部楼层
膜拜大佬

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

1477

主题

1万

回帖

4万

积分

登峰造极

积分
40198
发表于 2025-2-4 13:50:22 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

1314

主题

9916

回帖

3万

积分

管理员

积分
35153
 楼主| 发表于 2025-2-4 13:51:09 | 显示全部楼层
顶了
回复

使用道具 举报

776

主题

7469

回帖

2万

积分

登峰造极

积分
25481
发表于 2025-2-4 13:52:05 | 显示全部楼层
mark
回复

使用道具 举报

880

主题

7880

回帖

2万

积分

登峰造极

积分
27112
发表于 2025-2-4 13:52:50 | 显示全部楼层
大佬 一键端3.0上线了吗
回复

使用道具 举报

1434

主题

1万

回帖

3万

积分

登峰造极

积分
39438
发表于 2025-2-4 13:53:20 | 显示全部楼层
markmark
回复

使用道具 举报

1489

主题

1万

回帖

3万

积分

登峰造极

积分
39751
发表于 2025-2-4 13:54:02 | 显示全部楼层
大佬,问问,客户端和逻辑服务器之间通信用的RSA加密方法究竟是什么,试了一下openssl生成的2048bit pkcs8或者2048bit pkcs1方法的pem文件,不行啊……
回复

使用道具 举报

1314

主题

9916

回帖

3万

积分

管理员

积分
35153
 楼主| 发表于 2025-2-4 13:54:16 | 显示全部楼层
做成网页版本不就好了嘛

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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