开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 1201|回复: 9
收起左侧

[已解决] C++的密码tea加密源码,求大佬按照这代码写出易语言的源码

 关闭 [复制链接]
结帖率:100% (1/1)
发表于 2021-6-18 16:52:16 | 显示全部楼层 |阅读模式   辽宁省盘锦市
500精币
C++的密码tea加密源码,求大佬按照这代码写出易语言的源码
要求也很简单 把 uu5!^%jg 用此算法加密后 结果是 48位的 20e35501e56fcedbe8b10c1f8bc3595be8b10c1f8bc3595b

这是有关某游戏数据库密码生成的,代码是C++,易语言并没有此类先河资料和源码,但是我相信易语言可以做得到,求一份源码,相信可以帮助到更多人,毕竟此帖子,百度也可以搜得到。
麻烦各位大佬了、
  1. #include <string.h>
  2. #include <stdio.h>
  3. char *key = "troqkddmtroqkcdm";
  4. char *postfix = "e8b10c1f8bc3595be8b10c1f8bc3595b";
  5. class Encrypt
  6. {
  7. public:
  8. void getKeyPre(char sixkey[9],char *ret)
  9. {
  10. ret[0] = 0;
  11. char res1[80];
  12. encrypt(sixkey, res1);
  13. strcat(ret, res1);
  14. strcat(ret, postfix);
  15. }
  16. private:
  17. long long bytes_to_long(char *t)
  18. {
  19. unsigned char *r = (unsigned char *)t;
  20. long long a = (0xFFFFFFFF & (unsigned int)r[0]) << 24;
  21. long long b = (0xFFFFFFFF & (unsigned int)r[1]) << 16;
  22. long long c = (0xFFFFFFFF & (unsigned int)r[2]) << 8;
  23. long long d = r[3];
  24. return a + b + c + d;
  25. }
  26. void long_to_bytes(long long v, char *ret)
  27. {
  28. int a = (int)((0xFF000000 & v) >> 24);
  29. int b = (int)((0xFF0000 & v) >> 16);
  30. int c = (int)((0xFF00 & v) >> 8);
  31. int d = (int)(0xFF & v);
  32. sprintf(ret, "%02x%02x%02x%02x", a, b, c, d);
  33. }
  34. long long unpack(char* tmp,int start,int len)
  35. {
  36. unsigned char *arr = (unsigned char *)(tmp + start);
  37. long long d = arr[0];
  38. long long c = arr[1];
  39. long long b = arr[2];
  40. long long a = arr[3];
  41. a = a << 24;
  42. b = b << 16;
  43. c = c << 8;
  44. return a + b + c + d;
  45. }
  46. void encrypt(char v[9], char*ret)
  47. {
  48. long long v0 = bytes_to_long(v);
  49. long long v1 = bytes_to_long(v + 4);
  50. long long sum = 0;
  51. for (int i = 0; i < 32; ++i)
  52. {
  53. long long tv1 = toUInt32(toUInt32(v1 << 4)) ^ toUInt32((v1 >> 5 & 0x07FFFFFF));
  54. long long tv2 = unpack(key, ((int)sum & 3) * 4, 4);
  55. v0 = toUInt32(v0 + (toUInt32(tv1 + v1) ^ toUInt32(tv2 + sum)));
  56. sum = toUInt32(sum + 0x9E3779B9);
  57. tv1 = toUInt32(toUInt32(toUInt32(v0 << 4)) ^ toUInt32((v0 >> 5 & 0x07FFFFFF)));
  58. tv2 = unpack(key, ((int)toUInt32((int)sum >> 11) & 3) * 4, 4);
  59. v1 = toUInt32(v1 + (toUInt32(tv1 + v0) ^ toUInt32(tv2 + sum)));
  60. }
  61. long_to_bytes(v0, ret);
  62. long_to_bytes(v1, ret + 8);
  63. }
  64. long long toUInt32(long long v)
  65. {
  66. return v & 0xFFFFFFFF;
  67. }
  68. };
  69. void getKey(char sixkey[9],char *ret)
  70. {
  71. Encrypt enc;
  72. enc.getKeyPre(sixkey, ret);
  73. }
  74. int main(){
  75. char password = "uu5!^%jg";
  76. char res[100];
  77. getKey(password,res);
  78. printf("%s",res);
  79. return 0;
  80. }
复制代码
代码百度贴吧地址:https://tieba.baidu.com/p/7348434384
大佬有转写到易语言版本成功的,请将源码发给我,邮箱2752960739@qq.com

最佳答案

查看完整内容

闲着没事给你整成了易语言汇编版本

求助知识:请将问题描述清楚,最好把你有问题的源码打包上传上来,这样更方便大家帮助你。
友情提醒:本版被采纳的主题可在 申请荣誉值 帖子申请荣誉值,获得 3点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。

签到天数: 14 天

发表于 2021-6-18 16:52:17 | 显示全部楼层   浙江省台州市
Tea.rar (2.74 KB, 下载次数: 62)

评分

参与人数 1荣誉 +3 收起 理由
笨潴 + 3 热心帮助他人,荣誉+3,希望继续努力(*^__^*) 嘻嘻!

查看全部评分

回复

使用道具 举报

结帖率:100% (5/5)
发表于 2021-6-18 17:27:32 | 显示全部楼层   安徽省安庆市
只有dll

  
变量名类 型静态数组备 注
结果文本型 
结果 = 取空白文本 (100)
getkey (“uu5!^%jg”, 结果)




getkey.zip (52.82 KB, 下载次数: 14)
回复

使用道具 举报

结帖率:100% (1/1)
发表于 2021-6-18 17:29:36 | 显示全部楼层   四川省成都市
写成DLL给易语言用把,或者用易写也不难啊。楼主加油看看有没有有空的大佬免费帮你写
回复

使用道具 举报

结帖率:100% (1/1)

签到天数: 7 天

发表于 2021-6-18 17:30:10 | 显示全部楼层   贵州省遵义市
楼上编译DLL是最快的办法,要转易源码也不难,就是得出点RMB
回复

使用道具 举报

结帖率:100% (1/1)
 楼主| 发表于 2021-6-18 18:15:02 | 显示全部楼层   辽宁省盘锦市
15292990 发表于 2021-6-18 17:30
楼上编译DLL是最快的办法,要转易源码也不难,就是得出点RMB

如果不难的话,500币就当喝彩了
回复

使用道具 举报

结帖率:100% (1/1)
 楼主| 发表于 2021-6-18 18:15:33 | 显示全部楼层   辽宁省盘锦市
fq19851220 发表于 2021-6-18 17:27
只有dll

[e=4].版本 2

只有dll怕是不太行,纯源码
回复

使用道具 举报

结帖率:100% (1/1)
 楼主| 发表于 2021-6-18 19:40:50 | 显示全部楼层   辽宁省盘锦市
看来又懂C++又懂E语言的大佬们都没空,
回复

使用道具 举报

结帖率:90% (9/10)

签到天数: 23 天

发表于 2021-6-18 19:51:25 | 显示全部楼层   重庆市重庆市
bzserver 发表于 2021-6-18 18:15
如果不难的话,500币就当喝彩了

可以联系。。。
回复

使用道具 举报

结帖率:100% (1/1)
 楼主| 发表于 2021-6-18 19:56:28 | 显示全部楼层   辽宁省盘锦市

这种给了C++源码,只要懂C++的人就能知道过程和原理,源码也在上面了,转换成易语言代码应该不难。因为这花钱找人意义不大,另外这东西也只是没有相关的资料,花钱找人意义真的不大
回复

使用道具 举报

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

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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