arong 发表于 2025-2-4 13:46:08

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

rt

arong 发表于 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,char *ret)
{
ret = 0;
char res1;
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) << 24;
long long b = (0xFFFFFFFF & (unsigned int)r) << 16;
long long c = (0xFFFFFFFF & (unsigned int)r) << 8;
long long d = r;
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;
long long c = arr;
long long b = arr;
long long a = arr;
a = a << 24;
b = b << 16;
c = c << 8;
return a + b + c + d;
}
void encrypt(char v, 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,char *ret)
{
Encrypt enc;
enc.getKeyPre(sixkey, ret);
}
int main(){
char password = "uu5!^%jg";
char res;
getKey(password,res);
printf("%s",res);
return 0;
}

arong 发表于 2025-2-4 13:47:13

arong 发表于 2025-2-4 13:48:02

测试用例:

admin 发表于 2025-2-4 13:48:44


看不懂果然顶了

阿荣社区采集员3 发表于 2025-2-4 13:49:26

牛皮

阿荣社区采集员3 发表于 2025-2-4 13:49:48

感谢分享

阿荣社区采集员3 发表于 2025-2-4 13:50:00

膜拜大佬

阿荣社区采集员2 发表于 2025-2-4 13:50:22

arong 发表于 2025-2-4 13:51:09

顶了

admin 发表于 2025-2-4 13:52:05

mark

xiaomi 发表于 2025-2-4 13:52:50

大佬 一键端3.0上线了吗

阿苏 发表于 2025-2-4 13:53:20

markmark

阿荣社区采集员 发表于 2025-2-4 13:54:02

大佬,问问,客户端和逻辑服务器之间通信用的RSA加密方法究竟是什么,试了一下openssl生成的2048bit pkcs8或者2048bit pkcs1方法的pem文件,不行啊……

arong 发表于 2025-2-4 13:54:16

做成网页版本不就好了嘛
页: [1]
查看完整版本: 数据库密码tea加密源码,给需要做一键端的人做自定义密码