找回密码
 加入
搜索
查看: 3439|回复: 2

[系统综合] 关于飞信2010登录加密的问题

[复制链接]
发表于 2011-5-9 22:41:58 | 显示全部楼层 |阅读模式
今天在网上找到了一个飞信2010登录加密的代码,但是不管怎么做就是不能得到正确的值!
加密的主要代码如下:

1.public static String encryptV4(String plainpass)
2.{
3.    return doHash(ConvertHelper.string2Byte("fetion.com.cn:"), ConvertHelper.string2Byte(plainpass));
4.}
当v4digest-type=2 时,v4digest的算法就需要用到userid和v4digest-type=1时加密密码后的结果。userid是一个整型数,把userid转换为字节数组,注意低字节在前。然后和用v4digest-type=1时加密结果转换为字节数组连接在一起,再计算SHA1的值就是加密结果了。 主要加密代码如下:
1.public static String encryptV4(int userid, String plainpass)
2.{
3.    String passHex  = encryptV4(plainpass);
4.    return doHash(ConvertHelper.int2Byte(userid), ConvertHelper.hexString2ByteNoSpace(passHex));
5.}
这是加密用的工具函数,就是把两个字节数组合成一个数组然后计算这个数组的SHA1的值,返回的是16进制的字节字符串
1.private static String doHash(byte[] b1, byte[] b2)
2.{
3.    byte [] dst = new byte[b1.length+b2.length];
4.    System.arraycopy(b1, 0, dst, 0, b1.length);
5.    System.arraycopy(b2, 0, dst, b1.length, b2.length);
6.    byte[] res = DigestHelper.SHA1(dst);
7.    return ConvertHelper.byte2HexStringWithoutSpace(res);
8.}

求的是当v4digest-type=2时候的值,plainpass=123456

在网络上搜索的时候,找到一篇文章,解释如下:
终于把2010飞信的加密算法搞清楚了。话说都一个月了,真郁闷吖。
很感谢wei2005前辈,他很好人,还把它的php代码都发给我了。要不是他,我想我早就放弃了。
好了,下面我们一步一步来。
先说一下步骤吧,
v4digest-type=1这步我想大家都没问题了,还是以fetion.com.cn:123456为例,第一次SHA1的结果是:871D0A9E95ABA22B4604224CFBA24E605FABBC34
然后把它转成二进制的字节数组,是这样一串奇怪的字符串“� 灂�+F"L�N`_�4”,具体的转换方法,在强人的博客里都有代码。如果你是用VB的话,其实就“871D0A9E95ABA22B4604224CFBA24E605FABBC34”转为十进制。每二个字符转为一个字节。代码:CLng("&H"&"87")结果是:135。具体的循环自己做吧。转完之后把它拷贝到字节数组里面,前面加上userid,以“673261280”为例,转为unsigned char,四个字节:“224,38,33,40”加起来就是24个字节。
然后再SHA1一次,结果是:“0f509990f57ba3dd20dd820206ecf92c4690768b”。


我自己的理解:
当v4digest-type=2的时候要先求出v4digest-type=1时候的SHA1的散列也就是得到871D0A9E95ABA22B4604224CFBA24E605FABBC34
$c=_SHA1('fetion.com.cn:123456')
MsgBox(0,"",$c)

$c=871D0A9E95ABA22B4604224CFBA24E605FABBC34
但是第二步求出0f509990f57ba3dd20dd820206ecf92c4690768b就出现问题了
$c=_SHA1('fetion.com.cn:123456')
$k = Binary('673261280')
MsgBox(0,"",_SHA1($k&$c))

得到的值是249C6449617588E6F8933AC5C826C10D3A3FCDD6
与文中给出的值不相符合?
不知道哪一步我理解错了?
发表于 2011-5-10 10:19:05 | 显示全部楼层
帮顶.好久没有用飞信了
发表于 2011-5-10 10:20:57 | 显示全部楼层
我也没有用飞信了。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-9-21 04:31 , Processed in 0.087762 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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