新手求助xxtea_encrypt加密函数问题

引擎版本:cocos2d-x 3.17.2

开发环境:Mac

尝试将该版本引擎里的xxtea.h 和 xxtea.cpp两个文件单独拉出来,建立一个mac上的命令行工程,主要代码如下:

    NSString *path = @"/Users/xxx/Downloads/test-lll/main-mingwen.lua";
    NSData *da = [NSData dataWithContentsOfFile:path];
    
    unsigned char* content = da.bytes;
    unsigned char* xxteaKey = "2dxLua";
    xxtea_long len11 = 0;
    unsigned char* result11 = xxtea_encrypt(content, (xxtea_long)strlen(content), "2dxLua", (xxtea_long)strlen("2dxLua"), &len11);

打印出result11的值 发现跟直接运行引擎demo 加密出来的内容不一样,这是为什么呢?难道跟运行的平台有关?

另外,github上有xxtea的各种语言版本:xxtea · GitHub

尝试了其中的c版和python版 加密出来的内容都和引擎demo里调用xxtea_encrypt加密出来的内容不一样 好奇怪?有大佬解答下吗?

unsigned char* content = da.bytes; 这句断点一下看内容对不对, OC应该不能这样直接转, 可以找一下API看怎么转成字符串

能加密能解密不就行了?
相同的内容,相同的密匙,加密后数据不一定相同,大多数都不同。
有些算法加盐的,密文里自带了随机数,每次加密后数据都不一样。

类似于“流式加密”

楼主还在吗, 我昨晚写了个函数可以把unsigned char*按十六进制打印,然后在win和mac上面都试了一下, 打印出来结果是一样的。现在的解决方案有点误导人,你可以再试试。

void printUnsignedChar(unsigned char *str) {
int len = strlen((const char *)str);
for (int i = 0; i < len; i++) {
printf("%02X", *(str + i));
}
printf("\n");
}

防杠声明:不针对任何人,单纯技术讨论,欢迎打脸。

你挺逗的 :grinning:

嗯, 看到你说的东西去了解了下,但是看源码感觉xxtea应该没有随机。然后就照楼主的操作做了个实验试了下 :grinning: :grinning: :grinning: