查看文章
 
飞信分析之八:飞信的加密方法
2007年04月01日 23:36
作者:nathan

花了好几天时间终于把飞信加密的密码用非.NET的方式给还原了,并用C++完全实现了一遍,回头把这个C++版的ShowPasswd贴上来。

看到有朋友问到飞信的加密方法,这里就把飞信用的加密和变换的方法一起简要介绍一下。

1.飞信的配置文件的加密方法
飞信的配置文件其实不是加密,只是进行了一下变换。这种变换的编码方法是:将原来的XML文本(UTF-8编码的)进行压缩,然后将压缩后的结果进行 base64编码,编码后的结果作为XML的DocumentElement的值,同时在XML的DocumentElement的Attributes中,加上 StoreMode=1。

压缩采用的是标准GZIP算法,飞信用的是.NET的类库System.IO.Compression.GZipStream。

2.飞信的用户密码的加密方法
我们把飞信的配置文件还原,就会看到保存的密码。这个可是真正的加密了,采用的是TripleDES算法,依然是标准的DES算法,.NET的类库是 System.Security.Cryptography。配置文件中是加密以后的结果的BASE64编码。

加密和解密重要的是KEY和IV。IV (initialization vector)在飞信中是固定的值,KEY的算法是:取当前用户的SID(security identifiers),表示成字符形式(S-1-5-xx-xxxxxxxxx-xxxxxxxxx.....),求这个字串的MD5,KEY即为这个字符串的求MD5 Digest的值。TripleDES是对称加密算法,用同样的KEY和IV就可以将其解密了。

类别:飞信协议分析||添加到搜藏 |分享到i贴吧|浏览(11630)|评论 (0)
 
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
     

   
帮助中心 | 空间客服 | 投诉中心 | 空间协议
©2012 Baidu