无名蜘蛛 发表于 2010-9-23 09:28:32

XXTEA解密只显示一半[已解决]

本帖最后由 无名蜘蛛 于 2010-9-23 10:00 编辑

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

水木子 发表于 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码,就在后面添加多少个空字符,这样转换回来就正常了。

3mile 发表于 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?mod=redirect&goto=findpost&ptid=14189&pid=152879&fromuid=7644217

pighead456 发表于 2011-10-30 09:22:31

回复水木子
查到个资料,JAVA的。解决办法,比较烦琐。
3mile 发表于 2010-9-23 10:28 http://www.autoitx.com/images/common/back.gif


    这个是错误的 等于没加密

menfan1 发表于 2011-10-30 10:07:17

如果仅仅是为了对字符串进行加解密的话,可以看看下面这个函数。
我一直是用的这个,感觉还不错。
水木子 发表于 2010-9-23 10:34 http://www.autoitx.com/images/common/back.gif

我也是用这个哈。。

pighead456 发表于 2011-10-30 10:10:18

回复水木子
查到个资料,JAVA的。解决办法,比较烦琐。
3mile 发表于 2010-9-23 10:28 http://www.autoitx.com/images/common/back.gif

两个错误

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

2. $abc=StringFromASCIIArray($a,0,Default,2);转换成UTF8

pighead456 发表于 2011-10-30 11:15:08

两个错误

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

2. $abc=StringF ...
pighead456 发表于 2011-10-30 10:10 http://www.autoitx.com/images/common/back.gif


    另外应该采用更简单的方式 直接转换
页: [1]
查看完整版本: XXTEA解密只显示一半[已解决]