找回密码
 加入
搜索
查看: 5588|回复: 13

[系统综合] XXTEA解密只显示一半[已解决]

  [复制链接]
发表于 2010-9-23 09:28:32 | 显示全部楼层 |阅读模式
本帖最后由 无名蜘蛛 于 2010-9-23 10:00 编辑

非常奇怪,不管加密多少,反正就是显示一半,显示的那一半也是正确的,也不出错,也不乱码。
$haha = _XXTEA_Decrypt("0x3D2F80F883C2DC18","123")
MsgBox(0,"",BinaryToString($haha))

评分

参与人数 1金钱 +20 收起 理由
水木子 + 20 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

发表于 2010-9-23 09:36:37 | 显示全部楼层
貌似是正常的,你再试试呢!

#Include <ACN_HASH.au3>
$sPass = _XXTEA_Encrypt('ABCDEFGHIJKLMNOPQRSTUVWXYZ', '123')
MsgBox(0, '', $sPass)
MsgBox(0, '', BinaryToString(_XXTEA_Decrypt($sPass, '123')))
 楼主| 发表于 2010-9-23 09:42:33 | 显示全部楼层
回复 2# 水木子
抱歉,是我没说清楚,是中文显示一半,英文正常!!
发表于 2010-9-23 09:49:27 | 显示全部楼层
本帖最后由 水木子 于 2010-9-23 09:52 编辑

哦!我刚刚测试了,的确有这问题。
出现这种情况,有可能是函数对U码转换的问题,貌似N多UDF函数都普遍存这个问题。

下面是一投机取巧的方法你试试!

#Include <ACN_HASH.au3>
$sPass = _XXTEA_Encrypt('中文测试     ', '123')
MsgBox(0, '编码:', $sPass)
MsgBox(0, '解码:', BinaryToString(_XXTEA_Decrypt($sPass, '123')))
 楼主| 发表于 2010-9-23 09:50:46 | 显示全部楼层
回复 2# 水木子
我是这样测试的
#include<ACN_HASH.AU3>
$haha = _XXTEA_Encrypt("哈哈哈哈","123")
MsgBox(0,"",$haha)
$huhu = _XXTEA_Decrypt($haha,"123")
MsgBox(0,"",BinaryToString($huhu))
4个哈哈变成两个哈哈了
发表于 2010-9-23 09:54:22 | 显示全部楼层
回复 5# 无名蜘蛛
希望4楼的方法能给你点帮助吧!
 楼主| 发表于 2010-9-23 09:55:30 | 显示全部楼层
回复 6# 水木子

多敲几个空格,呵呵,太有创意了
发表于 2010-9-23 09:57:41 | 显示全部楼层
嘿嘿!可以数一数字符串中有多少U码,就在后面添加多少个空字符,这样转换回来就正常了。
发表于 2010-9-23 10:28:49 | 显示全部楼层
回复 4# 水木子
查到个资料,JAVA的。
如果需要在 JavaScript 中加密解密带有汉字的信息, 在加密时,需要先将带加密信息用 utf16to8 进行转换,解密时,需要将解密后的内容再用 utf8to16 还原。
解决办法,比较烦琐。
#Include <ACN_HASH.au3>
#include <Array.au3>
; 字符串转换为 ASCII 码数组.
Local $a = StringToASCIIArray("中文测试",0,Default,2);UTF8读入字符串
; ASCII 码数组转换为字符串.
Local $s = StringFromASCIIArray($a,0,Default,1);转换成ANSI
;转换结果将会返回 ASCII 码表示的字符串.

$sPass = _XXTEA_Encrypt($s, '123');加密
MsgBox(0, '编码:', $sPass);密文
$decrypt=StringToASCIIArray(_XXTEA_Decrypt($sPass, '123'),0,Default,1);ANSI读入
$abc=StringFromASCIIArray($a,0,Default,2);转换成UTF8
MsgBox(0,"结果",$abc);结果
发表于 2010-9-23 10:34:40 | 显示全部楼层
如果仅仅是为了对字符串进行加解密的话,可以看看下面这个函数。
我一直是用的这个,感觉还不错。
http://www.autoitx.com/forum.php ... amp;fromuid=7644217
发表于 2011-10-30 09:22:31 | 显示全部楼层
回复  水木子
查到个资料,JAVA的。解决办法,比较烦琐。
3mile 发表于 2010-9-23 10:28



    这个是错误的 等于没加密
发表于 2011-10-30 10:07:17 | 显示全部楼层
如果仅仅是为了对字符串进行加解密的话,可以看看下面这个函数。
我一直是用的这个,感觉还不错。
水木子 发表于 2010-9-23 10:34


我也是用这个哈。。
发表于 2011-10-30 10:10:18 | 显示全部楼层
回复  水木子
查到个资料,JAVA的。解决办法,比较烦琐。
3mile 发表于 2010-9-23 10:28


两个错误

1.测试 确实是需要 u16-u8 转换  而 u8-ansi 是不行的 奇数汉字会出错

2. $abc=StringFromASCIIArray($a,0,Default,2);转换成UTF8
发表于 2011-10-30 11:15:08 | 显示全部楼层
两个错误

1.测试 确实是需要 u16-u8 转换  而 u8-ansi 是不行的 奇数汉字会出错

2. $abc=StringF ...
pighead456 发表于 2011-10-30 10:10



    另外应该采用更简单的方式 直接转换
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-18 14:57 , Processed in 0.086742 second(s), 28 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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